0
我在數據庫上做了一個觸發器,它會停止從我的數據庫中刪除表,但我只想將它應用到微型表上並不是全部,爲此我希望從表中刪除表名在執行放置命令時插入的觸發器表。我在這裏做了一個觸發器,請看下面。請幫助我完成這項任務,我真的需要完成這個任務。從觸發器獲取表名
Create TRIGGER [NO_DROP_Veripda] ON database
for delete
declare @table SYSNAME
select @table= ???? --Here I need help How Can I get table name and insert in this veriable
print @table
IF exists (select sys.sysobjects.name from sys.sysobjects where @table in ('test1','caseflds_bk'))
PRINT 'Dropping tables are not allowed!!!'
else
BEGIN
DISABLE TRIGGER [NO_DROP_Veripda] ON DATABASE
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = 'DROP TABLE dbo.' + QUOTENAME(@table) + ''
EXEC sp_executesql @SQL
begin
enable TRIGGER [NO_DROP_Veripda] ON DATABASE
end
END
我假設您必須基於MySQL只允許在特定表上創建觸發器的語法和事實來討論[sql-server]。 – vhu
如果您想阻止某些事情發生,那麼最簡單的方法就是不要爲人們授予執行該活動的權限 - 您爲什麼要授予人們刪除不想讓他們訪問的表的權限? –
多朋友用戶在數據庫上工作或錯誤地發現表被刪除,所以我假設這是一個永久的解決方案。 –