我需要为我的一个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