删除触发器中的多个 IF 语句
Multiple IF statements in Delete Trigger
我正在尝试在 SQL 服务器触发器中创建以下逻辑:
- 检查是否 Deleted.ProfID = 3
- 如果是,检查tblPartLic中是否没有ProfID = 3的记录,则
- 如果不是,则在 tblParticipantLicense 中插入一条未许可的 3 记录
- 一个。 idsNumber, txtEmailAddress, state = 70 状态
我试过了:
IF (deleted.idsProf = 3)
BEGIN
IF NOT Exists(Select PL.idsNumber FROM tblPartLic PL INNER JOIN Deleted D
ON PL.idsNumber=D.idsNumber
WHERE PL.idsProfession = 3 AND PL.idsState <> 70)
BEGIN
INSERT INTO tblPartLic (idsNumber, txtLicNumber, txtState, txtProfOrg,
idsCountry, idsState, idsProf)
SELECT Deleted.idsDASNumber, 'AR NL', 'NL', 'Architect', 208, 70, 3
FROM Deleted
END;
END;
Deleted
是一个 table(伪 table),因此可能有多行 - 其中一些可能有 ProfID = 3
,其中一些可能有ProfId <> 3
。这必须处理。此外,关系数据库是为基于集合的操作而不是过程操作而设计的。可以使用适当的 where
子句将您的逻辑构建到单个插入语句中。以下内容再现了上面显示的内容:
INSERT INTO tblPartLic (idsNumber, txtLicNumber, txtState, txtProfOrg, idsCountry, idsState, idsProf)
SELECT D.idsDASNumber, 'AR NL', 'NL', 'Architect', 208, 70, 3
FROM Deleted D
-- Condition 1 - ProfID = 3
WHERE D.ProfID = 3
-- Condition 2 - No existing record in tblPartLic
AND NOT EXISTS (
SELECT PL.idsNumber
FROM tblPartLic PL
WHERE PL.idsProfession = 3 AND PL.idsState <> 70
AND PL.idsNumber = D.idsNumber
);
我正在尝试在 SQL 服务器触发器中创建以下逻辑:
- 检查是否 Deleted.ProfID = 3
- 如果是,检查tblPartLic中是否没有ProfID = 3的记录,则
- 如果不是,则在 tblParticipantLicense 中插入一条未许可的 3 记录
- 一个。 idsNumber, txtEmailAddress, state = 70 状态
我试过了:
IF (deleted.idsProf = 3)
BEGIN
IF NOT Exists(Select PL.idsNumber FROM tblPartLic PL INNER JOIN Deleted D
ON PL.idsNumber=D.idsNumber
WHERE PL.idsProfession = 3 AND PL.idsState <> 70)
BEGIN
INSERT INTO tblPartLic (idsNumber, txtLicNumber, txtState, txtProfOrg,
idsCountry, idsState, idsProf)
SELECT Deleted.idsDASNumber, 'AR NL', 'NL', 'Architect', 208, 70, 3
FROM Deleted
END;
END;
Deleted
是一个 table(伪 table),因此可能有多行 - 其中一些可能有 ProfID = 3
,其中一些可能有ProfId <> 3
。这必须处理。此外,关系数据库是为基于集合的操作而不是过程操作而设计的。可以使用适当的 where
子句将您的逻辑构建到单个插入语句中。以下内容再现了上面显示的内容:
INSERT INTO tblPartLic (idsNumber, txtLicNumber, txtState, txtProfOrg, idsCountry, idsState, idsProf)
SELECT D.idsDASNumber, 'AR NL', 'NL', 'Architect', 208, 70, 3
FROM Deleted D
-- Condition 1 - ProfID = 3
WHERE D.ProfID = 3
-- Condition 2 - No existing record in tblPartLic
AND NOT EXISTS (
SELECT PL.idsNumber
FROM tblPartLic PL
WHERE PL.idsProfession = 3 AND PL.idsState <> 70
AND PL.idsNumber = D.idsNumber
);