【发布时间】:2017-09-15 00:33:13
【问题描述】:
在使用 SQL Server Management Studio 进行 SQL 编码时,我可以在插入或删除时从具有不同行数的表中删除。在我更新表 A 之后,我想从表 A 中删除匹配项,如果它们在表 B 中。这个想法是最终只得到表 A 中已更新的行。我有 10 列,但将使用 4 到把事情简单化。
CREATE TRIGGER utr_Updates
ON tableA
AFTER UPDATE
AS BEGIN
SET NOCOUNT ON;
EXEC usp_updates
END
CREATE PROCEDURE usp_Updates
AS
BEGIN
IF EXISTS (SELECT * FROM tableA
WHERE col1 IN (SELECT DISTINCT col1 FROM tableB))
DELETE FROM tableA
WHERE col1 IN (SELECT DISTINCT col1 FROM tableB)
IF EXISTS (SELECT * FROM tableA
WHERE col2 IN (SELECT DISTINCT col2 FROM tableB))
DELETE FROM tableA
WHERE col2 IN (SELECT DISTINCT col2 FROM tableB)
IF EXISTS (SELECT * FROM tableA
WHERE col3 IN (SELECT DISTINCT col3 FROM tableB))
DELETE FROM tableA
WHERE col3 IN (SELECT DISTINCT col3 FROM tableB)
IF EXISTS (SELECT * FROM tableA
WHERE col4 IN (SELECT DISTINCT col4 FROM tableB))
DELETE FROM tableA
WHERE col4 IN (SELECT DISTINCT col4 FROM tableB)
END
起点
START
TABLE A TABLE B
col1 W, X, Y, Z col1 W, X, Y, Z
col2 1, 2, 3, 4 col2 1, 2, 3, 4
col3 A, 5, 6, D col3 A, 5, 6, D
col4 7, B, C, D col3 7, B, C, D
表 A 在 col1 和 col3 更新
AFTER UPDATE
TABLE A TABLE B
col1 W, S, Y, Z col1 W, X, Y, Z
col2 1, 2, 3, 4 col2 1, 2, 3, 4
col3 A, 5, 1, D col3 A, 5, 6, D
col4 7, B, C, D col3 7, B, C, D
期望的结果
TABLE A
col1 W, S, Y, Z
col3 A, 5, 1, D
【问题讨论】:
标签: sql-server database ssms