在postgres上运行的MySQL上CONSTRAINT的语法错误

时间:2018-11-10 21:20:12

标签: mysql sql postgresql syntax

教授给了一个.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继续在家进行练习,并且出现错误:“意外约束”。由于它可以与postgres一起使用,但不能在MySQL中使用,可能是MySQL出现语法错误?

2 个答案:

答案 0 :(得分:1)

您应该做的更多详细,每个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));

答案 1 :(得分:0)

MySQL's acceptable formats(关于外键)在其详尽的文档中进行了描述。

其他CONSTRAINT选项为also shown in the documents

例如,主键:

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

作为CREATE TABLE的一部分,可以在结尾进行FOREIGN KEY检查。

[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