2014-05-04 67 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;