欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
規則和觸發(fā)器
1.規則
規則是一個(gè)向后兼容的功能,用于執行一些與 CHECK 約束相同的功能。CHECK 約束是用來(lái)限制列值的首選標準方法。CHECK 約束比規則更簡(jiǎn)明,一個(gè)列只能應用一個(gè)規則,但是卻可以應用多個(gè) CHECK 約束。CHECK 約束作為 CREATE TABLE 語(yǔ)句的一部分進(jìn)行指定,而規則以單獨的對象創(chuàng )建,然后綁定到列上。

下例創(chuàng )建一個(gè)規則,執行與前面主題中的 CHECK 約束示例相同的功能。Microsoft SQL Server 2000 首選的方法是 CHECK 約束。

CREATE RULE id_chk AS @id BETWEEN 0 and 10000
GO
CREATE TABLE cust_sample
    (
    cust_id             int
    PRIMARY KEY,
    cust_name          char(50),
    cust_address          char(50),
    cust_credit_limit    money,
    )
GO
sp_bindrule id_chk, ‘cust_sample.cust_id‘
GO
【注釋?zhuān)簊p_bindrule:將規則綁定到列或用戶(hù)定義的數據類(lèi)型】
 
二.觸發(fā)器
 
1. 觸發(fā)器是一種特殊的存儲過(guò)程﹐它不能被顯式地調用﹐而是在往表中插入記錄﹑更新記錄或者刪除記錄時(shí)被自動(dòng)地激活。所以觸發(fā)器可以用來(lái)實(shí)現對表實(shí)施復雜的完整性約`束。
         
2. SQL Server為每個(gè)觸發(fā)器都創(chuàng )建了兩個(gè)專(zhuān)用表﹕Inserted表和Deleted表。這兩個(gè)表由系統來(lái)維護﹐它們存在于內存中而不是在數據庫中。這兩個(gè)表的結構總是與被該觸發(fā)器作用的表的結構相同。觸發(fā)器執行 完成后﹐與該觸發(fā)器相關(guān)的這兩個(gè)表也被刪除。
Deleted表存放由于執行Delete或Update語(yǔ)句而要從表中刪除的所有行。
Inserted表存放由于執行Insert或Update語(yǔ)句而要向表中插入的所有行。
3.Instead of 和 After觸發(fā)器
SQL Server2000提供了兩種觸發(fā)器﹕Instead of 和After 觸發(fā)器。這兩種觸發(fā)器的差別在于他們被激活的時(shí)間不同。
        
Instead of觸發(fā)器用于替代引起觸發(fā)器執行的T-SQL語(yǔ)句。除表之外﹐Instead of 觸發(fā)器也可以用于視圖﹐用來(lái)擴展視圖可以支持的更新操作。
        
After觸發(fā)器在一個(gè)Insert,Update或Deleted語(yǔ)句之后執行﹐進(jìn)行約束檢查等動(dòng)作都在A(yíng)fter觸發(fā)器被激活之前發(fā)生。After觸發(fā)器只能用于表。
        
一個(gè)表或視圖的每一個(gè)修改動(dòng)作(insert,update和delete)都可以有一個(gè)instead of 觸發(fā)器﹐一個(gè)表的每個(gè)修改動(dòng)作都可以有多個(gè)After觸發(fā)器。
4.觸發(fā)器的執行過(guò)程
如果一個(gè)Insert﹑update或者delete語(yǔ)句違反了約束﹐那幺After觸發(fā)器不會(huì )執行﹐因為對約束的檢查是在A(yíng)fter觸發(fā)器被激動(dòng)之前發(fā)生的。所以After觸發(fā)器不能超越約束。
       
Instead of 觸發(fā)器可以取代激發(fā)它的操作來(lái)執行。它在Inserted表和Deleted表剛剛建立﹐其它任何操作還沒(méi)有發(fā)生時(shí)被執行。因為Instead of 觸發(fā)器在約束之前執行﹐所以它可以對約束進(jìn)行一些預處理。
        
5.使用T-SQL語(yǔ)句來(lái)創(chuàng )建觸發(fā)器
  
基本語(yǔ)句如下﹕        
           create trigger trigger_name
           on {table_name | view_name}
           {for | After | Instead of }
           [ insert, update,delete ]
           as
           sql_statement
          
6﹕相關(guān)示例﹕         
1)在Orders表中建立觸發(fā)器﹐當向Orders表中插入一條訂單記錄時(shí)﹐檢查goods表的貨品狀態(tài)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表建立一個(gè)插入觸發(fā)器﹐在添加一條訂單時(shí)﹐減少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表建立刪除觸發(fā)器﹐實(shí)現Goods表和Orders表的級聯(lián)刪除。
create trigger goodsdelete
on goods
after delete
as
delete from orders
where goodsname in
(select name from deleted)
4)在Orders表建立一個(gè)更新觸發(fā)器﹐監視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表建立一個(gè)插入觸發(fā)器﹐保證向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)我們做實(shí)驗中用到的表xs(num,name,sex,dept),xk(num,name,cname,grade)。
 要保證想選課表中輸入的num,name和xs表中一致,我們可以想xk表中輸入num,自動(dòng)的插入name值。
使用如下觸發(fā)器可以實(shí)現:
CREATE TRIGGER trig_readname
ON t2
FOR INSERT
AS
update t2 set name=t1.name
from t2,t1 where t1.num=t2.num

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
觸發(fā)器怎么寫(xiě)
SQL觸發(fā)器語(yǔ)法
SQL觸發(fā)器語(yǔ)法參考 賽迪網(wǎng)技術(shù)社區
《SQL Server 2005基礎教程及上機指導》第7章 觸發(fā)器
終于有人將MySQL講明白了
Sql Server觸發(fā)器
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久