我需要爲我的一個SQL表創建一個唯一的約束,這也將檢查兩個case語句。這在Oracle中工作正常。但是我無法在SQL Server 2008中工作。我將這兩個查詢放在這裏。在包含case語句的SQL Server中創建約束條件
ORACLE(正常工作):
CREATE UNIQUE INDEX UK2_TR_ASSESSMENTEMPLOYEE ON TR_ASSESSMENTEMPLOYEE
(CASE WHEN ("EMPLOYEEID" IS NOT NULL AND "SCHEDULE" IS NULL) THEN NULL
ELSE "EMPLOYEEID" END , CASE WHEN "SCHEDULE" IS NULL THEN NULL
ELSE "SCHEDULE" END)
SQL服務器:
Alter table TR_ASSESSMENTEMPLOYEE
Add Constraint UK2_TR_ASSESSMENTEMPLOYEE Unique
(
CASE WHEN EMPLOYEEID Is Not NULL AND SCHEDULE IS NULL THEN NULL ELSE EMPLOYEEID,
CASE WHEN SCHEDULE IS NULL THEN NULL ELSE SCHEDULE
)
請救救我。提前致謝。
我不確定它可能在SQL服務器中......也許嘗試在您的CASE語句中添加'END'關鍵字,並嘗試使用CREATE UNIQUE INDEX語法而不是ADD ADDTRATRA,但我認爲它會不行。但是我沒有看到創建這種'UNIQUE'約束的目的。 – Yann39