SQL Server中類似Oracle中before觸發器
有這樣的應用情形,除了使用2表之間主外來鍵約束中啟用級聯修改和級聯刪除這種SQL Server自帶的解決方案外,我們還可以使用觸發器來完成類似的功能,以下通過一個刪除來舉例說明:
假如一個SysFuncDic(功能字典表)、SysFuncRights(功能許可權表),功能許可權表中的FuncID和功能字典表中FuncID有外來鍵約束關係,現在我們要刪除SysFuncDic中的記錄,因為做過外來鍵約束關係,所以無法刪除。解決的辦法是首先刪除SysFuncRights表中所有與FuncID對應的記錄即可。
create table SysFuncDic
(
FuncID int not null identity(1,1) primary key,
FuncName varchar(100)
)
create table SysFuncRights
(
ID int not null primary key identity(1,1),
FuncID int not null,
EmpID int not null
)
insert into SysFuncDic values('AA')
insert into SysFuncDic values('BB')
insert into SysFuncDic values('CC')
insert into SysFuncRights values(1,12)
insert into SysFuncRights values(2,12)
insert into SysFuncRights values(3,12)
/***********************刪除觸發器**************************/
create trigger tri_delete on SysFuncDic
instead of delete
as
begin
declare @FuncID int;
select @FuncID = FuncID from deleted;
delete SysFuncDic where FuncID = @FuncID;
delete SysFuncRights where FuncID = @FuncID;
end
/**********************************************************/
select * from SysFuncDic; --查詢功能字典表記錄
select * from SysFuncRights; --查詢功能許可權表中記錄
delete from SysFuncDic where FuncID=1; --刪除功能字典表中記錄,進行測試
相關文章
- 瞭解SQL Server觸發器及觸發器中的事務AWSQLServer觸發器
- SQL Server 觸發器SQLServer觸發器
- SQL Server觸發器SQLServer觸發器
- sql-server觸發器SQLServer觸發器
- Sql Server系列:觸發器SQLServer觸發器
- 【SQL Server】-- 一觸即發之觸發器SQLServer觸發器
- SQL Server 2005中的DDL觸發器的實現SQLServer觸發器
- SQL Server:觸發器詳解SQLServer觸發器
- SQL Server 2000中的觸發器使用SQLServer觸發器
- 觸發器中獲取SQL語句觸發器SQL
- SQL Server 觸發器詳情HOPPSQLServer觸發器
- SQL server觸發器簡單示例SQLServer觸發器
- SQL Sever 2000中的前觸發器和後觸發器SQL觸發器
- 轉:類似SQL中的split函式SQL函式
- 淺入淺出SQL Server 觸發器SQLServer觸發器
- 淺談SQL Server觸發器的使用SQLServer觸發器
- 關於SQL SERVER觸發器的理解SQLServer觸發器
- Oracle中觸發器的應用 (zt)Oracle觸發器
- SQL Server資料庫級別觸發器SQLServer資料庫觸發器
- SQL Server 觸發器的修改與刪除SQLServer觸發器
- 觸發器中操作LOB觸發器
- SQL Server 2005系列教學_ 觸發器SQLServer觸發器
- BEFORE觸發器修正資料錯誤觸發器
- SQL觸發器SQL觸發器
- (15)mysql 中的觸發器MySql觸發器
- 觸發器中不能commit觸發器MIT
- SQL Server約束和DML觸發器的比較SQLServer觸發器
- Oracle中審計刪除(DELETE)操作的觸發器Oracledelete觸發器
- SQLite中中實現 if not exist 類似功能SQLite
- 建立SQL觸發器SQL觸發器
- SQL觸發器(二)SQL觸發器
- Oracle觸發器Oracle觸發器
- Oracle觸發器觸發級別Oracle觸發器
- SQL Server實戰五:儲存過程與觸發器SQLServer儲存過程觸發器
- oracle中rownum,sql server中top函式,mysql中limit[轉載]OracleServer函式MySqlMIT
- oracle 觸發器實現禁止在資料庫中建立dblink ---透過觸發器實現Oracle觸發器資料庫
- sql觸發器刪除資料庫中的級聯記錄SQL觸發器資料庫
- SQL Server 觸發器中的兩個臨時表inserted及deleted,其資料從何而來?SQLServer觸發器delete