create table Board (
boardID char(30) not null,
readLevel tinyint not null,
writeLevel tinyint not null,
PRIMARY KEY (boardID) ) engine=InnoDB character set=utf8;
create table Post (
postID int not null AUTO_INCREMENT,
title char(50) not null,
content TEXT not null,
writeDate date not null,
readCount int not null,
PRIMARY KEY (postID)) engine=InnoDB character set=utf8;
create table Save_Board_Post(
boardID char(30) not null,
postID int not null,
FOREIGN KEY (boardID) REFERENCES Board(boardID) ON UPDATE CASCADE,
FOREIGN KEY (postID) REFERENCES Post(postID) ON UPDATE CASCADE ) engine=InnoDB character set=utf8;
insert into Board (boardID, readLevel, writeLevel) values ('testBoard', 0, 0);
insert into Post (title, content, writeDate, readCount) values ('testPost1', 'test', CURRENT_TIMESTAMP() ,0);
select * from Board where boardID='testBoard';
select * from Post where tile='testPost1';
select * from Save_Board_Post where boardID='testBoard';
我是sql新手。而且我不是英语母语的人。
所以,请原谅我的英语水平。
这是我的mysql代码。
最后五行用于测试。并且从Board and Post中选择运行正常。
但
select * from Save_Board_Post where boardID= 'testBoard';
它不起作用。此代码没有错误。但没有输出结果。
我想这意味着Save_Board_Post表中没有数据。
我以为REFERENCES命令在插入父表时会自动创建数据。
如果没有,请告诉我如何自动创建关系数据。
不,那不是什么REFERENCES
。REFERENCES
约束的全部意思是(手动)插入到Save_Board_Post
表中的每一行都必须在和表中存在一个boardID
和一个。不会自动将任何内容插入该表。postID
Board
Post
如果您要表示帖子所在的板,则执行此操作的适当方法是使板ID成为该帖子的属性,例如
CREATE TABLE Post (
postID INTEGER NOT NULL AUTO_INCREMENT,
boardID CHAR(30) NOT NULL,
...
FOREIGN KEY (boardID) REFERENCES Board(boardID)
);
而不是只为该数据创建一个完全独立的表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句