在MySQL服务器中创建一对作为主键的表

时间:2012-09-26 04:34:17

标签: mysql sql primary-key

我有两张桌子:

  1. 作者(id,name,add,DOB),其中字段分别为INTEGER,CHAR(20),CHAR(20),DATE。主键= id。

  2. 图书(出价,标题,出版商),其中字段分别为INTEGER,CHAR(20),CHAR(20)。主键=出价。

  3. 我想创建另一个表写字段辅助,bid,datePublished,其中:

    1. aid = INTEGER ...这实际上是来自作者的身份。
    2. bid = INTEGER ...这实际上是图书
    3. 的出价
    4. 主键=(援助,出价)。
    5. 我该怎么做?

      我尝试了以下代码行,并且所有代码都出现了语法错误:

      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)
      );
      

3 个答案:

答案 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));