我有两张桌子:
作者(id,name,add,DOB),其中字段分别为INTEGER,CHAR(20),CHAR(20),DATE。主键= id。
图书(出价,标题,出版商),其中字段分别为INTEGER,CHAR(20),CHAR(20)。主键=出价。
我想创建另一个表写字段辅助,bid,datePublished,其中:
我该怎么做?
我尝试了以下代码行,并且所有代码都出现了语法错误:
CREATE TABLE Write (
aid INTEGER,
bid INTEGER, datePublished DATE,
PRIMARY KEY NONCLUSTERED (aid,bid),
FOREIGN KEY (aid) REFERENCES Authors(id),
FOREIGN KEY (bid) REFERENCES Books(bid)
);
CREATE TABLE Write (
aid INTEGER,
bid INTEGER,
datePublished DATE,
PRIMARY KEY (aid,bid)
);
答案 0 :(得分:3)
你遇到的有趣问题。原因是Write
是mysql中的保留关键字,如果您通过查询中的反引号来覆盖它,则只能将其用作标识符。我建议你选择另一个名字,如果你真的想使用Write
,请用
CREATE TABLE `Write` (
aid INTEGER,
bid INTEGER,
datePublished DATE,
PRIMARY KEY (aid,bid)
);
请记住,表Write
上的任何其他查询也需要反引号,如果有人忘记它们,可能会导致恼人的错误。
答案 1 :(得分:1)
写入是reserved word,没有任何表可以被命名(可以使用back tics但是为了让你的生活轻松远离需要反向抽搐的名字)。
这是完整的架构 http://sqlfiddle.com/#!2/dfe22/1
答案 2 :(得分:0)
试试这个:
CREATE TABLE Write (aid INTEGER, bid INTEGER, datePublished DATE PRIMARY KEY (aid,bid));