我有两个表,t1是a1表的主键,t1是引用表(a1)的a2的外键
A1创建表
CREATE TABLE `a1` (
`t1` INT(11) NOT NULL AUTO_INCREMENT,
`t2` CHAR(50) NOT NULL DEFAULT '0',
PRIMARY KEY (`t1`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=0
;
A2创建表
CREATE TABLE `a2` (
`t1` INT(11) NULL DEFAULT NULL,
`t2` CHAR(50) NULL DEFAULT NULL,
INDEX `FK__a1` (`t1`),
CONSTRAINT `FK__a1` FOREIGN KEY (`t1`) REFERENCES `a1` (`t1`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
我尝试插入如下的查询
插入a1(t2)值('test1'); 插入a2(t2)值('test2');
查看执行结果
A1 Table
t1 │ t2
─────────
1 │ test1
A2 Table
t1 │ t2
─────────
null│ test1
为什么a2可调值的t1为空? 我想插入auto_increment t1(a1表)的值来插入t1(a2表)
请让我知道最好的方式!谢谢你的回答!
答案 0 :(得分:1)
null
表格中有t1 of A2
值,因为您在表格设计中为A2表格中的t1列提及了NULL DEFAULT NULL
。
插入A2表时,必须从A1列传递t1的值。
你可以使用这样的查询。我不确定。
插入a2(t1,t2)值(从A1中选择t1,'test2',其中t2 ='test2');
答案 1 :(得分:1)
您可以使用LAST_INSERT_ID()
:
INSERT into a1(t2) values ('test1');
INSERT into a2(t1,t2) values ( LAST_INSERT_ID(),'test2');
的 SqlFiddleDemo
强>