-1

我正在创建 3 个子类表,其他 2 个已完成并正常工作,但是当我为最后一个表输入以下代码时出现此错误(1064):

mysql> CREATE TABLE foreign (
    -> account_no VARCHAR(16) NOT NULL,
    -> foreign_id VARCHAR(16) NOT NULL,
    -> TYPE CHAR(4) DEFAULT 'FORE' NOT NULL
    -> CHECK ( TYPE = 'FORE'),
    -> currency_TYPE CHAR(3) NOT NULL
    -> CHECK ( currency_TYPE IN ('EUR','USD','HKD')),
    -> balance DECIMAL(16,2),
    -> PRIMARY KEY(account_no, foreign_id),
    -> FOREIGN KEY(account_no, TYPE)
    -> ON UPDATE CASCADE
    -> ON DELETE CASCADE);

错误消息告诉我在foreign( account_no VARCHAR(16) NOT NULL, foreign_id VARCHAR(16) NOT NULL, TYPE得到错误的语法之间,但我找不到它,有什么问题吗?

4

2 回答 2

0

FOREIGN 是 MySQL 的保留字。

重命名此表,或使用反引号 ` 引用此名称 -

CREATE TABLE `foreign` (...
于 2012-11-29T07:04:29.910 回答
0

对于 FOREIGN KEY(account_no, TYPE) 您需要提供参考列

例子

CREATE TABLE parent (id INT NOT NULL,
                 PRIMARY KEY (id)
  ) 
 CREATE TABLE child (id INT, parent_id INT,
                INDEX par_ind (parent_id),
                FOREIGN KEY (parent_id) REFERENCES parent(id)
                  ON DELETE CASCADE
   ) 
于 2012-11-29T07:13:29.100 回答