如何删除这些完整性约束条件 MySql中如果一个表未有任何数据之前,建立了FOREIGN KEY和REFERENCES,应该如何删除这些完整性约束条件呢?(不用删除表)还有,这是没有CONSTRAINT命名子句的,直接用FOREIGN KEY 列名 REFERENCES 列名; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 原始实例:CREATE TABLE Course(Cno CHAR(4) PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4),Ccredit SMALLINT,);ALTER TABLE Course add FOREIGN KEY Cpno REFERENCES Course(Cno); 你可以用 show create table 得到这个约束的名字,然后进行删除。mysql> show create table Course;+--------+---------------------------------------------------------------------| Table | Create Table+--------+---------------------------------------------------------------------| Course | CREATE TABLE `course` ( `Cno` char(4) NOT NULL, `Cname` char(40) DEFAULT NULL, `Cpno` char(4) DEFAULT NULL, `Ccredit` smallint(6) DEFAULT NULL, PRIMARY KEY (`Cno`), KEY `Cpno` (`Cpno`), CONSTRAINT `course_ibfk_1` FOREIGN KEY (`Cpno`) REFERENCES `course` (`Cno`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 |+--------+---------------------------------------------------------------------1 row in set (0.08 sec)mysql>mysql> alter table Course DROP FOREIGN KEY `course_ibfk_1`;Query OK, 0 rows affected (0.08 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> 够速度!!顺便问一下:为什么下面这个不可在mysql中执行呢?CREATE TABLE Course(Cno CHAR(4) PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4),Ccredit SMALLINT,FOREIGN KEY Cpno REFERENCES Course(Cno)); CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, CONSTRAINT FOREIGN KEY (Cpno) REFERENCES Course(Cno) ); CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY(Cpno) REFERENCES Course(Cno) );问题是myisam不支持外键 因为此时你的Course并不存在,所以自然无法 REFERENCES Course(Cno) ,只能先建表,然后再加自参照的外键. 如何分割mysql的日志? mysql数据还原 难死牛的问题! too many connection 日期格式转换问题 24万条数据,所有字段都设置成KEY,用mysql做全文检索速度真慢。 怎麼導出 MYSQL 的數據結構? 怎麼做?(有沒有指令) 求个sql语句 怎样多台电脑访问一个数据库的问题 【SQL性能】查询QQ好友发给我消息的最新一条信息按好友分组SQL咋写比较好 MySQL数据库中用GRANT语句增添新用户 这个mysql触发器怎么写呀??一个到特定时间全部清空一个表的触发器。
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
);
ALTER TABLE Course add FOREIGN KEY Cpno REFERENCES Course(Cno);
+--------+---------------------------------------------------------------------
| Table | Create Table
+--------+---------------------------------------------------------------------
| Course | CREATE TABLE `course` (
`Cno` char(4) NOT NULL,
`Cname` char(40) DEFAULT NULL,
`Cpno` char(4) DEFAULT NULL,
`Ccredit` smallint(6) DEFAULT NULL,
PRIMARY KEY (`Cno`),
KEY `Cpno` (`Cpno`),
CONSTRAINT `course_ibfk_1` FOREIGN KEY (`Cpno`) REFERENCES `course` (`Cno`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+--------+---------------------------------------------------------------------
1 row in set (0.08 sec)mysql>
mysql> alter table Course DROP FOREIGN KEY `course_ibfk_1`;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql>
顺便问一下:为什么下面这个不可在mysql中执行呢?
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY Cpno REFERENCES Course(Cno)
);
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT
,
CONSTRAINT FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES Course(Cno)
);问题是myisam不支持外键
因为此时你的Course并不存在,所以自然无法 REFERENCES Course(Cno) ,只能先建表,然后再加自参照的外键.