2016-02-04 102 views
0

我是SQL新手,在我的语法中有一个我不明白的错误。任何帮助/建议?SQL新增内容,插入'表'错误

我创建了一个表中调用ACCOUNT

CREATE TABLE `ACCOUNT` (
    `acc_ID` INT NOT NULL, 
    `acc_name` VARCHAR(45) NOT NULL, 
    `acc_manager` VARCHAR(45) NOT NULL, 
    `acc_balance` VARCHAR(45) NOT NULL, 
    `acc_transactionLimit` INT NOT NULL, 
    `acc_creditLimit` INT NOT NULL, 
    `OUTLET_out_ID` INT NOT NULL, 
    PRIMARY KEY (`acc_ID`), 
    INDEX `fk_ACCOUNT_OUTLET1_idx` (`OUTLET_out_ID` ASC), 
    CONSTRAINT `fk_ACCOUNT_OUTLET1` 
    FOREIGN KEY (`OUTLET_out_ID`) 
    REFERENCES `OUTLET` (`out_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 

没有问题为止。但是当我尝试将记录插入到表中我得到以下错误:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (Database.ACCOUNT, CONSTRAINT fk_ACCOUNT_OUTLET1 FOREIGN KEY (OUTLET_out_ID) REFERENCES OUTLET (out_ID))

我重新签上我的OUTLET参考表:

CREATE TABLE `OUTLET` (
    `out_ID` INT NOT NULL, 
    `out_name` VARCHAR(45) NOT NULL, 
    `out_manager` VARCHAR(45) NOT NULL, 
    `out_address` VARCHAR(100) NOT NULL, 
    `out_phone` VARCHAR(15) NOT NULL, 
    `out_email` VARCHAR(45) NULL, 
    PRIMARY KEY (`out_ID`)) 

我没有发现任何问题,它。

然而,当试图插入:

INSERT INTO ACCOUNT(acc_ID, acc_name, acc_manager, acc_balance, acc_transactionLimit, acc_creditLimit) VALUES 
(01, 'White', 'Mr.Good', '352.00', 1000.00, 500.00), 
(02, 'Hopkins', 'Mr.Good', '403.00', 1000.00, 500.00), 
(03, 'Aumbry', 'Mr.Good', '240.00', 1000.00, 500.00), 
(04, 'Kaze', 'Mr.Good', '76.00', 1000.00, 500.00), 
(05, 'Ashley', 'Mr.Bad', '24.00', 1000.00, 500.00), 
(06, 'Zoara', 'Mr.Bad', '503.00', 1000.00, 500.00), 
(07, 'Shawn', 'Mr.Bad', '34.00', 1000.00, 500.00), 
(08, 'Obsie', 'Mr.Bad', '278.00', 1000.00, 500.00), 
(09, 'Ven', 'Mr.Mr.Bad', '345.00', 1000.00, 500.00), 
(10, 'Zhan', 'Mr.Mr.Bad', '491.00', 1000.00, 500.00); 

我得到上述错误。

+0

你有任何表中的数据吗?这通常会导致发生这种错误。 – PhpDude

+0

作为一个纯粹的事物,值得注意的是,MySQL只是一种类型的SQL数据库,并且有许多SQL数据库可用。 – Martin

+0

你已经声明OUTLET_out_ID是一个外键,但你的插入没有任何赋值。 –

回答

1

您需要将数据插入到出口表的OUTLET_out_ID引用,因为这是一个NON-NULL列,但为foreign key,但没有钥匙尚未作出,所以你需要相应地重新排列你的刀片。

你也不能跳过这个值,因为它的值为NON-NULL,而你当前的插入失败,因为你没有给它一个有效的外键引用。

将数据插入到你的外键约束首先源表,然后将账户数据

此外,插入到Outlet表中的数据需要对应于Accounts表中引用的值,如由外键指定的。


我个人认为这是在这些数据中插入的情况下很容易直接t插入不FK约束数据和数据插入完成后添加这些条件。亲自。

1

看到你的OUTLET表格脚本本来是很好的;但是这里有一些更明显的字段:字段OUTLET_out_ID设置为NOT NULL,并且您的INSERT脚本没有该字段的值。

因此,请将该字段修改为OUTLET_out_ID INT NULL或在INSERT查询中包含值。

+0

我在提交过程中遇到了错误,我的意图是显示OUTLET表格脚本,并进行编辑和更正以备将来参考。我想我现在明白我的问题更好了。感谢您的反馈和帮助。 – Zion