SQL重命名和使用外键引用

时间:2014-11-09 19:48:58

标签: mysql

我在这里尝试做的是正确的吗?我可以重命名表中的外键吗?

 CREATE TABLE EMPLOYEE
    (
    EMP_NUMBER INTEGER(25) NOT NULL,
    EMP_FIRST_NAME CHAR(60),
    EMP_LAST_NAME CHAR(60),
    EMP_SALARY DECIMAL (15,2),
    EMP_STARTDATE DATE,
    EMP_GENDER CHAR(1),
    EMP_HOURS INT(5),
    PRIMARY KEY(EMP_NUMBER)
    )

    CREATE TABLE ORDERS
    ( ORDER_NUMBER INTEGER(45) NOT NULL,
    ORDER_PART_NAME CHAR(150),
    ORDER_PLACED_BY INTEGER(50)

    PRIMARY KEY (ORDER_NUMBER),
    FOREIGN KEY (ORDER_PLACED_BY) REFERENCES EMPLOYEE(EMP_NUMBER) ON UPDATE CASCADE
    )

FOREIGN KEY(ORDER_PLACED_BY)参考更新CASCADE的员工(EMP_NUMBER)

这有用吗? EMP_NUMBER可以存在于两个不同的表中而没有错误吗?

    CREATE TABLE ORDERS
    ( ORDER_NUMBER INTEGER(45) NOT NULL,
    ORDER_PART_NAME CHAR(150),
    EMP_NUMBER INTEGER(25),

    PRIMARY KEY (ORDER_NUMBER),
    FOREIGN KEY (EMP_NUMBER) REFERENCES EMPLOYEE ON UPDATE CASCADE
    )

这可能是一个非常简单的问题,只是试图自己学习这些东西,到目前为止这对我来说是个大问题,因为那时我必须重新制作所有的表格。感谢

1 个答案:

答案 0 :(得分:0)

是的它可以,但是如果您要加入表orders.EMP_NUMBER,那么在查询EMPLOYEE时必须使用它的表名作为范围,因为该表也有一个相同的列名。

再次指出,在你的ORDERS表中,FK约束定义是错误的。它必须是

FOREIGN KEY (EMP_NUMBER) REFERENCES EMPLOYEE(EMP_NUMBER) ON UPDATE CASCADE