看一下下面的sql代码就可以了:
DROP TABLE IF EXISTS `Program_Release`;
CREATE TABLE `Program_Release` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`prog_id` mediumint(8) unsigned NOT NULL default '0',
`name` char(15) collate utf8_bin NOT NULL default '',
-- 主键
PRIMARY KEY (`id`),
-- unique键
UNIQUE KEY `name` (`name`),
-- 外键
KEY `FK_Program_Release_1` (`prog_id`),
CONSTRAINT `FK_Program_Release_1` FOREIGN KEY (`prog_id`) REFERENCES `Program` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
mysql只有InnoDB这个引擎支持外键。
在表建好之后设置外键的方法:
ALTER table IC_Release add foreign key(ic_id) references IC(id) on delete restrict on update restrict;
设置unique键的方法:
ALTER TABLE `Branch` ADD UNIQUE (`name`);
---------------------------------------------------------------
我现在有两个字段不能重复一个ID,一个name,id设置成了自动增长,怎么才能把name设置成不能重复???
下面那个不行:
CREATE TABLE tb_department (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
dt_name char(10),
dt_createTime varchar(20),
dt_bz varchar (50)
UNIQUE(dt_name)
) AUTO_INCREMENT = 100;
回答:
不能放在这里,要单独的一个建立索引的语句才行,例如:
create unique index idx_num on tb_department (dt_name);
-----------------------------------------------------------------
原有一unique索引AK_PAS_Name(PAC_Name)在表tb_webparamcounter中,
然后我执行以下sql修改索引
alter table tb_webparamcounter drop index AK_PAS_Name;
alter table tb_webparamcounter add UNIQUE AK_PAS_Name(PC_ID,PAC_Name);
这一段执行成功后,我向表里添加了一条新数据,再加另一条时发现索引的逻辑不对,还需要再加一个字段进去,于是执行
alter table tb_webparamcounter drop index AK_PAS_Name;
alter table tb_webparamcounter add UNIQUE AK_PAS_Name(PC_ID,PAC_Name,PAC_Value);
此时提示
1025-Error on rename of '.\hotelweb\#sql-e84_3 ' to '.\hotelweb\tb_webparamcounter '(errno:150)
为什么会出这个错,如何解决?我现在一般情况下不能把表中数据导出,表中数据有用不能drop表。
回答:
在google查到解决方法,原来其中的PC_ID是FOREIGN KEY,必需先drop FOREIGN KEY,再重做上一步才行。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。