我有一个包含以下数据的查找表:
AlcoholStatus
Id Name
0 None
1 Not Drunk
2 Drunk Less
3 Drunk Medium
4 Heavy Drinker
另一个表引用此表数据(ID),因此它在另一个表中充当外键。
现在我想将此表更新为仅包含数据更新和删除两行。它给了我外键约束。我做了我想要的但有没有简单的方法来实现这一目标?我还想将另一个表更新为适当的值,如下所示:
AlcoholStatus
Id Name
0 None
1 Yes
2 No
这里,Yes表示初始数据中的3,4,No表示1,2。
请帮助我如何删除这两行并更新上述数据,并将其他表更新为1 (For 3,4) and 2 for (1,2)
。
答案 0 :(得分:2)
对于 SQL Server :
首先是具有外键的更新表(我称之为Alcoholics
):
UPDATE Alcoholics
SET StatusId = CASE WHEN StatusId IN (1,2) THEN 2
WHEN StatusID IN (3,4) THEN 1
ELSE 0 END
然后更新AlcoholStatus
表
UPDATE AlcoholStatus
SET Name = CASE WHEN id = 1 THEN 'Yes'
WHEN id = 2 THEN 'No'
ELSE Name END
WHERE Id IN (1,2)
然后使用id in (3,4)
DELETE FROM AlcoholStatus
WHERE id in (3,4)