3

我有 2 张桌子:

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

  2. 字段分别为 INTEGER、CHAR(20)、CHAR(20) 的书籍(出价、标题、出版商)。主键 = 出价。

我想创建另一个带有字段aid、bid、datePublished的写入表,其中:

  1. aid = INTEGER ... 这实际上是来自 Authors 的 id。
  2. bid = INTEGER ... 这实际上是 Books 的出价
  3. 主键 =(援助,出价)。

我该怎么做呢?

我尝试了以下代码行,它们都给出了语法错误:

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

3 回答 3

3

你遇到的有趣问题。原因是它Write是 mysql 中的保留关键字,如果在查询中用反引号括起来,则只能将其用作标识符。我建议您选择另一个名称,或者,如果您真的想使用Write,请将您的 create 查询替换为

CREATE TABLE `Write` (
    aid INTEGER, 
    bid INTEGER, 
    datePublished DATE, 
    PRIMARY KEY (aid,bid)
);

请记住,表上的任何其他查询Write也需要反引号,如果有人忘记它们,这可能会导致烦人的错误。

于 2012-09-26T04:42:49.970 回答
1

Write 是一个保留字,不能命名任何表(它可以使用 back tic,但为了让您的生活轻松远离需要 back tic 的名称)。

这是完整的架构 http://sqlfiddle.com/#!2/dfe22/1

于 2012-09-26T04:46:12.633 回答
0

尝试这个 :

CREATE TABLE Write (aid INTEGER, bid INTEGER, datePublished DATE PRIMARY KEY (aid,bid));
于 2012-09-26T04:39:07.067 回答