也许这可能是一个愚蠢的问题。好的,所以我创建了下表:
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更新,否则我会出错?
foreing key
只是一个约束,保持你的表一致性,所以你没有错误的数据(像没有任何用户的孤儿帖)。因此MatBailie说数据不会自动填充。
你没有指定你的rdbms但是在插入之后你需要获取last_insert id。例如在Sql Server中
然后你用它来创建表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,
);