Ⅰ 求sql刪除觸發器,
不好意思剛才寫錯了
create TRIGGER temp1
on A for delete --刪除時觸發
as
DECLARE @Acode nvarchar(20)--聲明變數用於記錄刪除的APrdCode
DECLARE @Aw numeric --聲明變數用於記錄刪除的記錄的APrdWeight
DECLARE @Bw numeric --聲明變數用於B中BPrdWeight
select @Acode = APrdCode from deleted --從邏輯表deleted中讀取A中刪除的APrdCode
select @Aw =APrdWeight from deleted --從邏輯表deleted中讀取A中刪除的記錄的APrdWeight
select @Bw =BPrdWeight from B where BPrdCode=@Acode --B中BPrdWeight
update B set BprdCode=@Bw - @Aw where BPrdCode=@Acode --刪除後B的BprdCode
--deleted 和 inserted 是邏輯(概念)表。這些表在結構上類似於定義觸發器的表(也就是在其中嘗試用戶操作的表);這些表用於保存用戶操作可能更改的行的舊值或新值。
Ⅱ SQL。。刪除指定表的觸發器求助。。
因為你的IF語句的有效范圍只到raiserror('你不能刪除該表',16,1)
不管IF是否成立,rollback tran都會被執行的。
我沒有檢查是否還有其它錯誤,針對不執行的問題解決方法是
create trigger safety
on database
for drop_table
as
declare @data xml
declare @schemaname nvarchar(max)
declare @tablename nvarchar(max)
set @data=eventdata()
select @schemaname=eventdata().value('(/EVENT_INSTANCE/SCHEMANAME)[1]','nvarchar(max)')
select @tablename=eventdata().value('(/EVENT_INSTANCE/OBJECTNAME)[1]','nvarchar(max)')
if @schemaname='dbo'and @tablename='a'
begin
raiserror('你不能刪除該表',16,1)
rollback tran
end
Ⅲ 如何一次刪除多個觸發器,謝謝各位
觸發器是一種特殊的存儲過程,類似於其它編程語言中的事件函數,SQL Server 允許為 INSERT、UPDATE、DELETE 創建觸發器,當在表(視圖)中插入、更新、刪除記錄時,觸發一個或一系列 T-SQL 語句。
本專題的目的並非是向您詳盡地介紹觸發器,而是系統地向您介紹觸發器的常用知識與相關應用,並與您一起探討應用經驗,如果您需要了解觸發器不常用的知識點,請參見 SQL Server 聯機叢書(安裝 SQL Server 時默認是安裝的)。
a.基礎-創建一個簡單的觸發器
觸發器是一種特殊的存儲過程,類似於事件函數,SQL Server 允許為 INSERT、UPDATE、DELETE 創建觸發器,即當在表中插入、更新、刪除記錄時,觸發一個或一系列 T-SQL語句。
觸發器可以在查詢分析器里創建,也可以在表名上點右鍵->「所有任務」->「管理觸發器」來創建,不過都是要寫 T-SQL 語句的,只是在查詢分析器里要先確定當前操作的資料庫。
創建觸發器用 CREATE TRIGGER
CREATE TRIGGER 觸發器名稱
ON 表名
FOR INSERT、UPDATE 或 DELETE
AS
T-SQL 語句
注意:觸發器名稱是不加引號的。
如下是聯機叢書上的一個示例,當在 titles 表上更改記錄時,發送郵件通知 MaryM。
CREATE TRIGGER reminder
ON titles
FOR INSERT, UPDATE, DELETE
AS
EXEC master..xp_sendmail 'MaryM',
'Don''t forget to print a report for the distributors.'
b.基礎-刪除觸發器
用查詢分析器刪除
在查詢分析器中使用 drop trigger 觸發器名稱 來刪除觸發器。
也可以同時刪除多個觸發器:drop trigger 觸發器名稱,觸發器名稱...
注意:觸發器名稱是不加引號的。在刪除觸發器之前可以先看一下觸發器是否存在:
if Exists(select name from sysobjects where name=觸發器名稱 and xtype='TR')
用企業管理器刪除
在企業管理器中,在表上點右鍵->「所有任務」->「管理觸發器」,選中所要刪除的觸發器,然後點擊「刪除」。
c.基礎-重命名觸發器 ......
Ⅳ SQL如何創建刪除的觸發器
CREATE TRIGGER A表_DEL
ON A表FOR DELETE
AS
--SET NOCOUNT ON
DELETE E
FROM A表 E
INNER JOIN deleted D ON E.主鍵ID = D.主鍵ID
Ⅳ sql創建一個觸發器刪除語句
CREATE TRIGGER [觸發器名] ON [掛靠表名]
before/after --關鍵字 UPDATE --觸發操作
AS
BEGIN
--內容SQL
END;
Ⅵ sql中 如何定義 刪除 觸發器
-- 查看資料庫已有觸發器
use yourdatabase
go
select * from sysobjects where xtype='TR'
-- 查看單個觸發器
exec sp_helptext '觸發器名'
--刪除觸發器:
基本語句如下:
drop trigger trigger_name
Ⅶ sql聯動刪除,刪除觸發器怎樣來設置
關於合並,沒有太明白你的具體要求。
第二個問題,兩種解法,如果是innodb表可以通過建立外鍵約束來級聯刪除,語法如下:
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION
第二種就是設置after delete trigger
Ⅷ oracle觸發器,記錄刪除的sql語句
一般情況下,trigger 是不能實現記錄當前的sql的,只能記錄刪除當前這一條數據的sql和刪除掉的數據。
可以查一下事務處理試試。
Ⅸ 如何在SQL 中創建一個可以刪除數據的觸發器
觸發器只有針對某張表被刪除、插入、修改時才可以對另一張表進行刪除、插入、修改數據的