我在删除一行(用户)以删除具有由该行的ID组成的名称的表(但并非每个ID都有一个表)之后编写触发器,我不喜欢在该表中抛出异常不存在!
CREATE TRIGGER AfterDeleteUser
ON usersProject
FOR DELETE
AS DECLARE @IDres VARCHAR(50),
@tablename VARCHAR(50)
SELECT @IDres = ins.IDressource FROM DELETED ins;
set @tablename = concat('MSG_', @IDres);
SET NOCOUNT ON;
DECLARE @Sql NVARCHAR(MAX);
SET @Sql = N'DROP TABLE '+QUOTENAME(@tablename)
EXECUTE sp_executesql @Sql;
go
当表不存在时出现此错误!
Msg3701,Niveau 11,État5,Ligne 7
无法删除表“ MSG_”,因为该表不存在或您没有权限。
答案 0 :(得分:3)
从SQL Server 2016开始,您可以使用以下语法:
DROP TABLE IF EXISTS [Tablename]
对于旧版本,您可以执行以下操作:
IF OBJECT_ID('tablename', 'U') IS NOT NULL
DROP TABLE tablename;