如何插入相同值的主键和外来的?

时间:2015-11-25 10:28:40

标签: mysql sql

我有两个表,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表)

请让我知道最好的方式!谢谢你的回答!

2 个答案:

答案 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