我正在創建兩個表。首先將是驗證步驟,而第二步將在驗證通過後保存數據。另一個表的列上的唯一約束
所以我的第一個表是:
CREATE TABLE TABLE_NAME_TEMP(
SOME_NO number not null,
GROUP_NAME VARCHAR2(100) NOT NULL,
PARENT_GROUP_ID INT,
PRIMARY KEY (SOME_NO),
CONSTRAINT FK_PARENT FOREIGN KEY(PARENT_GROUP_ID) REFERENCES
TABLE_NAME(ID),
CONSTRAINT GROUP_NAME_UNIQUE UNIQUE (TABLE_NAME.GROUP_NAME, GROUP_NAME)
);
和第二臺後驗證成功通過持有:
CREATE TABLE TABLE_NAME(
ID number not null,
GROUP_NAME VARCHAR2(100) NOT NULL,
PARENT_GROUP_ID INT,
PRIMARY KEY(ID),
CONSTRAINT FK_PARENT FOREIGN KEY(PARENT_GROUP_ID) REFERENCES
TABLE_NAME(ID),
CONSTRAINT GROUP_NAME_UNIQUE UNIQUE (GROUP_NAME),
CONSTRAINT PK_ID_UNIQUE UNIQUE (ID)
);
我的問題是GROUP_NAME必須在TABLE_NAME獨一無二的。因此,我需要確保TABLE_NAME_TEMP中的GROUP_NAME不得與TABLE_NAME中的現有值匹配。我試過的方式CONSTRAINT GROUP_NAME_UNIQUE UNIQUE (TABLE_NAME.GROUP_NAME, GROUP_NAME)
給出了一個錯誤。有什麼建議?
你是說你想給定的GROUP_NAME只在TABLE_NAME_TEMP或TABLE_NAME中出現一次,但不是兩者都出現?如果是這樣,就不可能通過一個唯一的約束來實現,因爲這些只能應用於單個表。此外,在某些時候,您將在兩個表中都有條目,因爲在將其移到另一個表之前刪除某些內容是非常不尋常的 - 您通常會將該行復制並刪除。我想知道爲什麼你沒有一張標有表示是否驗證過的旗幟? – Boneist
@骨科醫生的確是這個意思,我明白了,然後我會去嘗試一些圍繞程序的工作,謝謝主席 – Hatik
這兩個獨立表格的原因是什麼,而不是一張帶有經過驗證的標誌欄的表格? (另外,「先生」是一個很大的假設!* {;-)) – Boneist