SQLServer觸發器建立、刪除、修改、檢視示例程式碼
二: SQL Server為每個觸發器都建立了兩個專用表:Inserted表和Deleted表。這兩個表。
一: 觸發器是一種特殊的儲存過程﹐它不能被顯式地呼叫﹐而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地啟用。所以觸發器可以用來實現對錶實施複雜的完整性約`束。
二: SQL Server為每個觸發器都建立了兩個專用表:Inserted表和Deleted表。這兩個表由系統來維護﹐它們存在於記憶體中而不是在資料庫中。這兩個表的結構總是與被該觸發器作用的表的結構相同。觸發器執行 完成後﹐與該觸發器相關的這兩個表也被刪除。
Deleted表存放由於執行Delete或Update語句而要從表中刪除的所有行。
Inserted表存放由於執行Insert或Update語句而要向表中插入的所有行。
三:Instead of 和 After觸發器
SQL Server2000提供了兩種觸發器:Instead of 和After 觸發器。這兩種觸發器的差別在於他們被啟用的同:
Instead of觸發器用於替代引起觸發器執行的T-SQL語句。除表之外﹐Instead of 觸發器也可以用於檢視﹐用來擴充套件檢視可以支援的更新操作。
After觸發器在一個Insert,Update或Deleted語句之後執行﹐進行約束檢查等動作都在After觸發器被啟用之前發生。After觸發器只能用於表。
一個表或檢視的每一個修改動作(insert,update和delete)都可以有一個instead of 觸發器﹐一個表的每個修改動作都可以有多個After觸發器。
四:觸發器的執行過程
如果一個Insert﹑update或者delete語句違反了約束﹐那么After觸發器不會執行﹐因為對約束的檢查是在After觸發器被激動之前發生的。所以After觸發器不能超越約束。
Instead of 觸發器可以取代激發它的操作來執行。它在Inserted表和Deleted表剛剛建立﹐其它任何操作還沒有發生時被執行。因為Instead of 觸發器在約束之前執行﹐所以它可以對約束進行一些預處理。
五:使用T-SQL語句來建立觸發器
基本語句如下:
create trigger trigger_name
on {table_name | view_name}
{for | After | Instead of }
[ insert, update,delete ]
as
sql_statement
六:刪除觸發器:
基本語句如下:
drop trigger trigger_name
七:檢視資料庫中已有觸發器:
-- 檢視資料庫已有觸發器
use jxcSoftware
go
select * from sysobjects where xtype='TR'
-- 檢視單個觸發器
exec sp_helptext '觸發器名'
八:修改觸發器:
基本語句如下:
alter trigger trigger_name
on {table_name | view_name}
{for | After | Instead of }
[ insert, update,delete ]
as
sql_statement
九:相關示例:
1:在Orders表中建立觸發器﹐當向Orders表中插入一條訂單記錄時﹐檢查goods表的貨品狀態status是否為1(正在整理)﹐是﹐則不能往Orders表加入該訂單。
create trigger orderinsert
on orders
after insert
as
if (select status from goods,inserted
where goods.name=inserted.goodsname)=1
begin
print 'the goods is being processed'
print 'the order cannot be committed'
rollback transaction --回滾﹐避免加入
end
2:在Orders表建立一個插入觸發器﹐在新增一條訂單時﹐減少Goods表相應的貨品記錄中的庫存。
create trigger orderinsert1
on orders
after insert
as
update goods set storage=storage-inserted.quantity
from goods,inserted
where
goods.name=inserted.goodsname
3:在Goods表建立刪除觸發器﹐實現Goods表和Orders表的級聯刪除。
create trigger goodsdelete
on goods
after delete
as
delete from orders
where goodsname in
(select name from deleted)
4:在Orders表建立一個更新觸發器﹐監視Orders表的訂單日期(OrderDate)列﹐使其不能手工修改.
create trigger orderdateupdate
on orders
after update
as
if update(orderdate)
begin
raiserror(' orderdate cannot be modified',10,1)
rollback transaction
end
5:在Orders表建立一個插入觸發器﹐保證向Orders表插入的貨品名必須要在Goods表中一定存在。
create trigger orderinsert3
on orders
after insert
as
if (select count(*) from goods,inserted where goods.name=inserted.goodsname)=0
begin
print ' no entry in goods for this order'
rollback transaction
end
6:Orders表建立一個插入觸發器,保證向Orders表插入的貨品資訊要在Order表中新增
alter trigger addOrder
on Orders
for insert
as
insert into Order
select inserted.Id, inserted.goodName,inserted.Number from inserted
相關推薦
SQLServer觸發器建立、刪除、修改、檢視示例程式碼
一: 觸發器是一種特殊的儲存過程﹐它不能被顯式地呼叫﹐而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地啟用。所以觸發器可以用來實現對錶實施複雜的完整性約束。 二: SQL Server為每個觸發器都建立了兩個專用表:Inserted表和Deleted表。這兩個表。一:
loner_li SQLServer觸發器建立、刪除、修改、檢視...
一: 觸發器是一種特殊的儲存過程﹐它不能被顯式地呼叫﹐而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地啟用。所以觸發器可以用來實現對錶實施複雜的完整性約束。二: SQL Server為每個觸發器都建立了兩個專用表:Inserted表和Deleted表。這兩個表。 一: 觸發器是一種特殊的儲存過程﹐它不能被
HiveQL 資料定義語言使用(一)—Hive中資料庫的建立、顯示、刪除和修改操作介紹
問題導讀: 1、建立資料庫命令中DATABASE可以被哪個關鍵字代替使用? 2、在建立資料庫的時候如何指定資料庫存放路徑? 3、如果一個數據庫中含有表,那麼刪除該資料庫有哪兩種方式? 4、刪除資料庫命令
oracle建立表空間、刪除表空間、修改表空間名稱
-----oracle建立表空間的方法 create tablespace dragon --dragon為建立的表空間名稱 bagfile/smallfile代表建立 datafile 'D:\dragon.dbf' --D:\dragon.dbf為資料檔名稱和 存放的地址 size 100M r
Qt操作SQLite資料庫——建立、開啟、關閉、增加、刪除和修改操作
if(!database.open()) { qDebug()<<database.lastError(); qFatal("failed to connect.") ; } else { //QSqlQuery類提供執行和操作的SQL語句的方法。 //可以用來執行DML(資料操作語言)語句,
數據庫復習總結(7)-表的創建以及插入命令、數據修改、數據刪除
位置 bject src key arc cat () 例如 truncate 一、表的操作 表:創建、修改、刪除 通過select * from sysobjects where xtype=‘U‘可以查看所有存在的表 多個列間使用逗號分隔
windows下如何添加、刪除和修改靜態路由
class 永久路由 pre 數據包 dd命令 如果 所有 pos ber 1、添加一條路由表 route add 192.168.100.0 mask 255.255.255.248 192.168.1.1 metric 3 if 2 1 2 添加一條路由記錄
mysql在表的某一位置增加一列、刪除一列、修改列名
如果想在一個已經建好的表中新增一列,可以用以下程式碼: alter table 表名 add column 列名 varchar(20) not null; 這條語句會向已有的表中加入一列,這一列在表的最後一列位置。如果我們希望新增在指定的一列,可以用: alter table 表名 add co
克隆之後一鍵修改IP、刪除Mac地址、修改主機名(未測試成功只是思路)
克隆之後需要修改IP、刪除Mac地址、修改主機名 $1:表示IP $2:表示主機名 1.IP 因為IP存在於/etc/sysconfig/network-scripts/ifcfg-eth0 替換IP 刪除HWADDR 2.刪除 rm -rf /etc/udev/rules
C#對資料庫的新增、刪除和修改
string str = "server=NO1;database=SuperMarket;integrated security=true"; SqlConnection c
mysql 建立、刪除 索引 key 、primary key 、unique key 與index區別
建立:creta index test_suoying(索引的欄位名) on 表名; 刪除:drop index index_name on table_name ; 一、key與primary key區別CREATE TABLE wh_logrecord ( logre
【MYSQL筆記3】MYSQL過程式資料庫物件之儲存過程的呼叫、刪除和修改
mysql從5.0版本開始支援儲存過程、儲存函式、觸發器和事件功能的實現。 我們以一本書中的例題為例:建立xscj資料庫的儲存過程,判斷兩個輸入的引數哪個更大。並呼叫該儲存過程。 (1)呼叫 首先,建立儲存過程(procedure),名為xscj.compar delimiter $$ crea
【MYSQL筆記3】MYSQL過程式數據庫對象之存儲過程的調用、刪除和修改
重新定義 del begin 筆記 class 實現 多個 5.0 如果 mysql從5.0版本開始支持存儲過程、存儲函數、觸發器和事件功能的實現。 我們以一本書中的例題為例:創建xscj數據庫的存儲過程,判斷兩個輸入的參數哪個更大。並調用該存儲過程。 (1)調用 首先,創
相對和絕對路徑、cd命令、建立和刪除目錄mkdir、rmdir、rm命令
目錄 2.6 相對和絕對路徑2.7 cd命令2.8 建立和刪除目錄mkdir/rmdir 2.9 rm命令 1、相對和絕對路徑 絕對路徑 從根開始的路徑 相對路徑 不是以根開頭的,相對當
mysql alter 語句用法,新增、修改、刪除欄位、索引、主鍵等
修改表名: ALTERTABLEadmin_user RENAMETO a_use //增加主鍵 altertable tabelname add new_field_id int(5) unsigned default 0 notnull auto_incr
Windows如何在cmd命令列中檢視、修改、刪除與新增、設定環境變數
首先明確一點: 所有的在cmd命令列下對環境變數的修改只對當前視窗有效,不是永久性的修改。也就是說當關閉此cmd命令列視窗後,將不再起作用。永久性修改環境變數的方法有兩種:一種是直接修改登錄檔(此種方法目前沒試驗過),另一種是通過我的電腦-〉屬性-〉高階,來設定系統的環
iptables規則的檢視、新增、插入、刪除和修改
這裡只列出比較常用的引數,詳細的請檢視man iptables 1、檢視 iptables -nvL --line-number -L 檢視當前表的所有規則,預設檢視的是filter表,如果要檢視NAT表,可以加上-t NAT引數 -n 不對ip地址進行反查,加上這個
jQuery創建、刪除和修改html標簽
文本 ack 點擊 pre 添加 pan -c jquery end 1.在父標簽內創建標簽,新創建的標簽放在最下面 $(‘parent‘).append(son)、$(‘son‘).appendTo(‘parent‘) <div class="d"> <
在PB中插入、刪除和修改資料
1.插入資料 在資料庫中插入一條資料使用INSERT語句,格式如下: INSERT INTO 表名 (欄位列表) VALUES (值列表) {USING 事務物件}; 不同的欄位使用逗號(“,”)分隔,並且不包含blob型別的欄位;值列表中不同的值之間用逗號分隔,和欄位列表
02.linux的檔案系統簡介、檢視目錄ls命令、切換目錄cd命令、建立目錄mkdir、刪除目錄rm、移動重新命名mv、建立檔案touch、拷貝cp
整個檔案系統有一個頂層目錄:/ bin:存放一些可執行的程式(命令); boot:存放系統啟動所需要的一些檔案; dev:系統中的硬體(硬體在Linux中通過裝置檔案來標識); etc:存放配置檔案的地方; home:使用者目錄的總目錄; lib