我是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);
到目前为止没有问题。但是,当我尝试将记录插入表中时,我收到以下错误:
错误1452(23000):无法添加或更新子行:外键 约束失败(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 :(得分:1)
您需要将数据插入到batch_matmul()
引用的 Outlet 表中,因为这是一个OUTLET_out_ID
列,但是NON-NULL
但是没有密钥尚未制作,因此您需要相应地重新订购插页。
您也不能跳过此值,因为它是foreign key
并且您当前的插入失败,因为您没有给它一个有效的外键引用。
将数据插入外键约束第一个的源表,然后将帐户数据第二个。
此外,插入Outlet表的数据需要与Accounts表中引用的值相对应,具体取决于外键。
我个人认为在这些数据插入情况下,只需插入没有FK约束的数据,并在插入数据后添加这些条件就更容易了。亲身。
答案 1 :(得分:1)
看到你的> class(df2)
[1] "xts" "zoo"
表脚本会很高兴;但是这里有一些更明显的东西:字段OUTLET
设置为OUTLET_out_ID
,而您的INSERT脚本没有该字段的值。
因此,要么将该字段修改为NOT NULL
,要么在OUTLET_out_ID INT NULL
查询中包含这些值。