教授给了一个.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出现语法错误?
答案 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