插入记录时,关系表不会更新

问题描述 投票:0回答:1

也许这可能是一个愚蠢的问题。好的,所以我创建了下表:

create table USER(
    ID int NOT NULL AUTO_INCREMENT primary key,
    firstname varchar(50) not null,
    lastname varchar(50) not null,
    password varchar(20) not null,
    emailU varchar(100) not null
);

create table POST(
    ID_User int,
    ID_Tweet int,
    primary key(ID_User, ID_Tweet),
    foreign key(ID_User) references USER(ID) on update cascade on delete cascade,
    foreign key(ID_Tweet) references TWEET(ID) on update cascade on delete cascade
);

create table TWEET(
    ID int NOT NULL AUTO_INCREMENT primary key,
    Text varchar(200)
);

当我插入一些东西时,例如:

insert into USER (firstname, lastname, password, emailU) values ('X', 'Y', 'XY', '[email protected]');

insert into TWEET (text) values ('Something');

它正确更新表USER和TWEET,但表POST仍为空。为什么?它应该用ID_User和ID_Tweet更新,否则我会出错?

mysql sql foreign-keys entity-relationship
1个回答
0
投票

foreing key只是一个约束,保持你的表一致性,所以你没有错误的数据(像没有任何用户的孤儿帖)。因此MatBailie说数据不会自动填充。

你没有指定你的rdbms但是在插入之后你需要获取last_insert id。例如在Sql Server中

How to get last inserted id?

然后你用它来创建表post上的新记录。

也许你的模型太简单但是现在我没有看到你需要有表POST,因为没有新数据将它添加到关系中。

如果你在推文中包含user_id字段,那就更好了

create table TWEET(
    ID int NOT NULL AUTO_INCREMENT primary key,
    Text varchar(200),
    ID_User int,
    foreign key(ID_User) references USER(ID) on update cascade on delete cascade,
);
© www.soinside.com 2019 - 2024. All rights reserved.