Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在第二个表中创建记录后在表中创建记录_Mysql_Sql - Fatal编程技术网

Mysql 在第二个表中创建记录后在表中创建记录

Mysql 在第二个表中创建记录后在表中创建记录,mysql,sql,Mysql,Sql,这是我的ERD的样子 我有自动递增ID的用户。当添加新用户时,会有一个触发器插入到biodata(在biodata表中,稍后将是关于用户DOB、城市等的信息)新记录中。Biodata用户id也是自动递增的,每当添加新用户时,我都会使用以下触发器来填充它: delimiter $$ create trigger trigger_biodata after insert on user for each row BEGIN insert into biodata values(null)

这是我的ERD的样子

我有自动递增ID的用户。当添加新用户时,会有一个触发器插入到biodata(在biodata表中,稍后将是关于用户DOB、城市等的信息)新记录中。Biodata用户id也是自动递增的,每当添加新用户时,我都会使用以下触发器来填充它:

delimiter $$
create trigger trigger_biodata
after insert 
on user for each row
BEGIN
    insert into biodata values(null);
END $$
delimiter ;

但当用户插入失败时,会出现一个错误,说明:

插入到用户值中(null、'biesiek'、'to'、'faja')错误代码:1452。 无法添加或更新子行:外键约束失败 (
mydb
biodata
,CONSTRAINT
fk_biodata_user2
外键 (
user\u id
)引用
user
id

因此,我正在寻找如何修复该问题的信息,或者如何使第二个表在添加新用户时获得相同的用户id成为可能。

CREATE TRIGGER tr_ai_biodata
插入后
关于用户
每行
插入biodata(user_id)值(NEW.id);

您能否提供索引定义?这会有很大帮助:)你不能(有效地)拥有biodata.user_id,它既可以自动递增,也可以是用户的外键(你也不想)。取下自动增量,并从user.id在触发器中插入用户id。@RBarryYoung该触发器看起来如何?与您的完全相同,只是插入行应该是
insert-into-bioinformation(user_-id)值(LAST_-insert_-id())@RBarryYoung在我向用户表中插入null而不是off id时不起作用。你知道怎么解决吗?我需要这个,因为当网站上的新用户将创建新帐户时,他们将只传递登录名、密码和电子邮件,而不是id。非常确定
new.id
应该是
LAST\u INSERT\id
。您不需要新ID,您需要复制刚刚创建的
user.ID
。此外,OP仍然需要从
bioinformation.user\u id
列中删除自动增量。@rbaryyoung。例如,在向用户值(null、'examplelogin'、'examplepassword'、'examplemail')中插入将使此记录的id=3(在自动递增之后)之后,我希望新记录中的用户id为id=3Well
new.id
sure看起来像Oracle PSQL,而不是MySql。您有参考资料吗?@rbaryyoung Fiddle已添加,请确保@rbaryyoung参考资料: