MySql中如果一个表未有任何数据之前,建立了FOREIGN KEY和REFERENCES,应该如何删除这些完整性约束条件呢?(不用删除表)还有,这是没有CONSTRAINT命名子句的,直接用
FOREIGN KEY 列名 REFERENCES 列名;

解决方案 »

  1.   

    原始实例:
    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);
      

  2.   

    你可以用 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>
      

  3.   

    够速度!!
    顺便问一下:为什么下面这个不可在mysql中执行呢?
    CREATE TABLE Course
    (Cno CHAR(4) PRIMARY KEY,
    Cname CHAR(40),
    Cpno CHAR(4),
    Ccredit SMALLINT,
    FOREIGN KEY Cpno REFERENCES Course(Cno)
    );
      

  4.   

    CREATE TABLE Course 
    (Cno CHAR(4) PRIMARY KEY, 
    Cname CHAR(40), 
    Cpno CHAR(4), 
    Ccredit SMALLINT

    CONSTRAINT FOREIGN KEY (Cpno) REFERENCES Course(Cno) 
    );
      

  5.   

    CREATE TABLE Course 
    (Cno CHAR(4) PRIMARY KEY, 
    Cname CHAR(40), 
    Cpno CHAR(4), 
    Ccredit SMALLINT, 
    FOREIGN KEY(Cpno) REFERENCES Course(Cno) 
    );问题是myisam不支持外键
      

  6.   


    因为此时你的Course并不存在,所以自然无法 REFERENCES Course(Cno) ,只能先建表,然后再加自参照的外键.