在postgres上工作的mysql上有约束的语法错误

3xiyfsfu  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(282)

教授给了一个.sql文件来做一些练习,下面是其中的一部分:
创建表部门

(DEPTNO NUMERIC(2) CONSTRAINT PK_DEPT PRIMARY KEY, (error 1)
DNAME VARCHAR(14),
LOC VARCHAR(13) );

创建表emp

(EMPNO NUMERIC(4) CONSTRAINT PK_EMP PRIMARY KEY, (error 2)
ENAME VARCHAR(10),
JOB VARCHAR(9),
HIREDATE DATE,
SAL NUMERIC(7,2),
DEPTNO NUMERIC(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT); (error 3)

我们用pgadmin 3在课堂上运行了这个文件,一切都很顺利,但是我下载了mysql而不是postgres在家里继续练习,它给出了一个错误:“unexpected constraint”。既然它可以在postgres中使用,但在mysql中却不能使用,那可能是mysql的语法错误吧?

ghhkc1vu

ghhkc1vu1#

mysql可接受的外键格式在其丰富的文档中进行了描述。
文档中还显示了其他约束选项
例如,主键:

[CONSTRAINT [symbol]] PRIMARY KEY [index_type] (key_part,...)
      [index_option] ...

作为create表的一部分,它可以在最后进行外键检查。

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (col_name, ...)
    REFERENCES tbl_name (col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
zzzyeukh

zzzyeukh2#

你应该做得更详细,每 rdbms 是不同的。。你不能用你在某些地方工作的语句 rdbms 对其他人 rdbms 餐桌部

CREATE TABLE DEPT
(DEPTNO NUMERIC(2),
DNAME VARCHAR(14),
LOC VARCHAR(13), 
CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO));

表emp

CREATE TABLE EMP
(EMPNO NUMERIC(4),
ENAME VARCHAR(10),
JOB VARCHAR(9),
HIREDATE DATE,
SAL NUMERIC(7,2),
DEPTNO NUMERIC(2), 
CONSTRAINT PK_EMP PRIMARY KEY (EMPNO),
CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO));

相关问题