也许这可能是一个愚蠢的问题。好的,所以我创建了下表:
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', 'xy@gmail.com');
和
insert into TWEET (text) values ('Something');
它正确更新表USER和TWEET,但表POST仍为空。为什么?它应该使用ID_User和ID_Tweet进行更新,否则我会出错?
答案 0 :(得分:0)
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,
);