2014-05-04 45 views
1

我需要在SQL中创建表的帮助。我需要一些帮助,添加一些限制。 EMP_NUM应该是一个主键和外键2. RTG_CODE应该是一个主键和外键1.SQL使用约束创建表

这是我走到这一步:

CREATE TABLE NEW_TABLE 
(
EMP_NUM NUMBER(5, 0) NOT NULL PRIMARY KEY, 
RTG_CODE CHAR(5 BYTE) NOT NULL FOREIGN KEY, 
EARNED_DATE DATE NOT NULL 
); 

COMMIT; 
+1

请添加标签以指示您正在使用的RDBMS(数据库程序)。 – Smandoli

+0

那么,你有什么问题?你没有得到你想要的东西?为什么不? – Smandoli

+0

我需要让EMP_NUM成为一个FK,除了它是一个PK,RTG_CODE也应该是一个PK,除了它是一个FK。 – TitanC

回答

4

外键需要参考的东西。这里是一个可能适用于你的语法的例子:

CREATE TABLE NEW_TABLE 
(
    EMP_NUM NUMBER(5, 0) NOT NULL PRIMARY KEY, 
    RTG_CODE CHAR(5 BYTE) NOT NULL, 
    EARNED_DATE DATE NOT NULL, 
    FOREIGN KEY (RTG_CODE) REFERENCES RTG(RTG_CODE) 
); 
+0

所以我可以让RTG_CODE引用EARNED_DATE? – TitanC

+0

@Chris。 。 。外键应该引用表的主键。而且,引用日期列的字符列没有意义。 –

2

我能看到的唯一的事情就是你不提供外键的表。你可以把它放在同一行。

CREATE TABLE NEW_TABLE 
(
EMP_NUM NUMBER(5, 0) NOT NULL PRIMARY KEY, 
RTG_CODE CHAR(5 BYTE) NOT NULL FOREIGN KEY REFERENCES RTG(RTG_CODE), 
EARNED_DATE DATE NOT NULL 
); 

COMMIT; 

或者有一个命名约束。

CREATE TABLE NEW_TABLE 
(
    EMP_NUM NUMBER(5, 0) NOT NULL PRIMARY KEY, 
    RTG_CODE CHAR(5 BYTE) NOT NULL FOREIGN KEY, 
    EARNED_DATE DATE NOT NULL 
    CONSTRAINT fk_RTG_CODE FOREIGN KEY (RTG_CODE) 
    REFERENCES RTG(RTG_CODE) 
); 
COMMIT;