mysql - 未在表中创建外键

标签 mysql sql

第一个表:

create table login(
  id int auto_increment, 
  user varchar(20), 
  pass varchar(20), 
  primary key(id)
);

第一个表是使用主键创建的..

第二个表:

create table check(
  cid int, 
  rid int, 
  usname varchar(20), 
  word varchar(20), 
  FOREIGN KEY(rid) REFERENCES login(id)
);

错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'check
(cid int, rid int, usname varchar(20), word varchar(20), FOREIGN KEY(rid) R' at
line 1

最佳答案

问题不在于外键。 check是MySQL中的保留字。所以你需要选择另一个名称或转义它:

create table `check`(
    cid int,
    rid int,
    usname varchar(20),
    word varchar(20),
    FOREIGN KEY(rid) REFERENCES login(id)
);

讽刺的是,虽然它是一个保留字,但实际上并没有被使用。唉,我确实希望 MySQL 支持 check 约束。

顺便说一下,here是一个 SQL Fiddle。

关于mysql - 未在表中创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995214/

相关文章:

sql - GROUP BY 但从其他列中获取所有值

mysql ...in where 子句不明确

mysql - 查询和 LEFT JOIN 不返回数据

mysql - 如何用netbeans执行程序?

php - 如何使用php和mysql动态计算经纬度距离?

sql - 将字符串拆分为两列

phpmailer 与 mysql 结果

php - 不能简单地使用 PostgreSQL 表名 ("relation does not exist")

c# - PostgreSQL 相当于 IF @@ROWCOUNT=0 INSERT INTO

mysql - 通过多链连接计数