我正在创建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
之间的语法错误,但我找不到它,有什么不对吗?
答案 0 :(得分:0)
FOREIGN是一个MySQL保留字。
重命名此表,或使用反引号`来引用此名称 -
CREATE TABLE `foreign` (...
答案 1 :(得分: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
)