我使用 MySQL 5.3.28 创建我的数据库。其中一张表是指自己,这是一个很大的痛苦。这是最初创建的代码:
CREATE TABLE IF NOT EXISTS `dhbpsychiatry`.`activity` (
`ActivityId` INT(11) NOT NULL AUTO_INCREMENT ,
`NeedsRepeating` BINARY(1) NULL DEFAULT NULL ,
`Prerequisition` INT(11) NOT NULL DEFAULT 0 ,
`ActivityName` VARCHAR(45) NOT NULL ,
`ActivityDescription` VARCHAR(45) NULL ,
PRIMARY KEY (`ActivityId`) ,
INDEX `Prerequisition` (`ActivityId` ASC) ,
CONSTRAINT `Prerequisition`
FOREIGN KEY (`ActivityId` )
REFERENCES `dhbpsychiatry`.`activity` (`ActivityId` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
问题当然是创建第一行。
INSERT INTO `dhbpsychiatry`.`activity` (`ActivityId`, `Prerequisition`,
`ActivityName`) VALUES (1, 1, 'No prerequisition');
返回
ERROR 1452: Cannot add or update a child row: a foreign key constraint fails
如果我尝试更简单也一样
INSERT INTO `dhbpsychiatry`.`activity` (`ActivityName`)
VALUES ('No prerequisition');
我想我已经尝试了所有可能性,使 FK 可以为空,不可为空,有或没有默认值......
经过一番挖掘后,我发现了一些可行的方法:
SET FOREIGN_KEY_CHECKS = 0;
Insert into activity (ActivityID, ActivityName) VALUES (0,'No prerequisition');
SET FOREIGN_KEY_CHECKS = 1;
所以我用这些行在工作台中创建了一个新的 SQL 脚本。
所以我在这里有两个问题:
- 如何在没有脚本的情况下添加第一行?
或者如果它不可能
2 每当我对数据库进行工程设计时,如何自动添加要执行的脚本?