-- 最初に作成したテーブルのSQL
CREATE TABLE `board` (
`row_no` serial,
`body` varchar(1000),
`subject` varchar(200),
`from` varchar(20),
`pdate` datetime,
`cdate` datetime,
primary key(`row_no`)
);
show create table board;
CREATE TABLE `board` (
`row_no` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`body` varchar(1000) DEFAULT NULL,
`subject` varchar(200) DEFAULT NULL,
`from` varchar(20) DEFAULT NULL,
`pdate` datetime DEFAULT NULL,
`cdate` datetime DEFAULT NULL,
PRIMARY KEY (`row_no`),
UNIQUE KEY `row_no` (`row_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 主キーに掲示板IDを追加する為に、no 列を row_no の後に追加
alter table `board` add `no` VARCHAR(20) after `row_no`;
-- 主キーの削除
alter table board drop primary key;
show create table board;
CREATE TABLE `board` (
`row_no` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`no` varchar(20) DEFAULT NULL,
`body` varchar(1000) DEFAULT NULL,
`subject` varchar(200) DEFAULT NULL,
`from` varchar(20) DEFAULT NULL,
`pdate` datetime DEFAULT NULL,
`cdate` datetime DEFAULT NULL,
UNIQUE KEY `row_no` (`row_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--※ すでにデータがある場合( no にセットするのは適当な文字列 )
update board set no = '0';
-- 主キー作成
alter table board add primary key(`row_no`,`no`);
show create table board;
CREATE TABLE `board` (
`row_no` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`no` varchar(20) NOT NULL DEFAULT '',
`body` varchar(1000) DEFAULT NULL,
`subject` varchar(200) DEFAULT NULL,
`from` varchar(20) DEFAULT NULL,
`pdate` datetime DEFAULT NULL,
`cdate` datetime DEFAULT NULL,
PRIMARY KEY (`row_no`,`no`),
UNIQUE KEY `row_no` (`row_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- インデックスの確認
show index from board;
-- インデックスの削除( ここは内容確認の為 )
alter table board drop index row_no;
CREATE TABLE `board` (
`row_no` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`no` varchar(20) NOT NULL DEFAULT '',
`body` varchar(1000) DEFAULT NULL,
`subject` varchar(200) DEFAULT NULL,
`from` varchar(20) DEFAULT NULL,
`pdate` datetime DEFAULT NULL,
`cdate` datetime DEFAULT NULL,
PRIMARY KEY (`row_no`,`no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
-- 保存していたデータの復帰
insert into board select * from board2;