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

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

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

開(kāi)通VIP
SYBASE觸發(fā)器及應用

SYBASE觸發(fā)器及應用

楊基鎮

Application of Sybase Trigger

Yang Jizhen

1 觸發(fā)器的創(chuàng )建方法
  一般地,創(chuàng )建觸發(fā)器的語(yǔ)法如下:
  Create Trigger觸發(fā)器名稱(chēng)
  On 表名&&指定所創(chuàng )建的觸發(fā)器與某個(gè)已存在的表關(guān)聯(lián)。
  For {Insert, Delete, Update}&&指定觸發(fā)器的類(lèi)型(即插入,刪除,更新或它們的任意組合)
  As
  SQL語(yǔ)句&&指定觸發(fā)器的觸發(fā)條件或動(dòng)作
  “觸發(fā)器名稱(chēng)”的格式如trg-[d][i][u]-xxxxx,其中d表示一個(gè)刪除類(lèi)型的觸發(fā)器,i表示一個(gè)插入類(lèi)型的觸發(fā)器,u表示一個(gè)更新類(lèi)型的觸發(fā)器,xxxxx表示觸發(fā)器所作用的表的名稱(chēng)。
  觸發(fā)器與觸發(fā)它的SQL語(yǔ)句是作為同一個(gè)事件來(lái)執行的,因而這里的“SQL語(yǔ)句”不能是任意的SQL語(yǔ)句。如果有多個(gè)對同一個(gè)表進(jìn)行同一類(lèi)型操作的觸發(fā)器,那么新的觸發(fā)器將會(huì )自動(dòng)替代舊的觸發(fā)器。一個(gè)觸發(fā)器只能用于一個(gè)表,而一個(gè)表可以有最多三個(gè)觸發(fā)器。只能在當前的數據庫中創(chuàng )建觸發(fā)器,而且對于臨時(shí)表或者視圖不能創(chuàng )建觸發(fā)器。

2 觸發(fā)器的作用
  1. 實(shí)現復雜的數據完整性約束,即主鍵外鍵參照完整性。這就是說(shuō),不能在主表中刪除或更新正在被相應從表的外鍵參照的主鍵值,如果一定要在主表中刪除或更新,不能在從表中插入或更新在相應主表的主鍵列中不存在的外鍵值;如果一定要在從表中插入或更新,那么相應主表的主鍵列中不存在的外鍵值,如果一定要在從表中插入或更新,那么相應主表也必須跟著(zhù)作相應的插入或更新。
  2. 維護復制數據的一致性。復制數據將是動(dòng)態(tài)的、實(shí)時(shí)的數據。
  3. 自動(dòng)刷新導出數據。在表中的記錄發(fā)生變化時(shí),希望其導出數據也能跟隨著(zhù)發(fā)生變化,利用觸發(fā)器就可以自動(dòng)地刷新導出數據。
  4. 施加特殊的業(yè)務(wù)規則和行為限制。不同的行業(yè)會(huì )有不同的業(yè)務(wù)規則和行為限制,利用觸發(fā)器可以輕松地規范具體的業(yè)務(wù)和復雜的行為。這是觸發(fā)器的一大具體作用。
  5. 監控某些特定行為的發(fā)生。利用觸發(fā)器可以拒絕執行非法行為并將發(fā)出非法行為的操作者和操作時(shí)間記錄下來(lái),便于安全管理。

3 觸發(fā)器的工作原理
  對于每個(gè)觸發(fā)器,SQL Server都會(huì )自動(dòng)創(chuàng )建2個(gè)臨時(shí)工作表,即inserted表和deleted表,這2個(gè)表作為系統的專(zhuān)用表存放于內存中,其結構與被作用的表相同,且在觸發(fā)行為結束后自動(dòng)被刪除。
  表1分別說(shuō)明inserted和deleted這二個(gè)工作表與客戶(hù)端發(fā)出的Insert,Delete或Update請求的關(guān)系。
表1

客戶(hù)請求 SQL Server響應 工作表名稱(chēng) 工作表內容
Insert 插入新行 inserted 被插入的行
deleted /
Delete 刪除舊行 inserted /
deleted 被刪除的行
Update 插入新行、刪除舊行 inserted 被插入的行
deleted 被刪除的行
  在觸發(fā)器的工作過(guò)程中,系統提供了一個(gè)行計數的全局變量@@rowcount,它有著(zhù)非常重要的作用。
  首先,通過(guò)它可以知道表中受某個(gè)操作影響的行數,這樣可以避免不必要的操作。如果某個(gè)表已經(jīng)建立觸發(fā)器,那么在進(jìn)行Insert,Delete或Update的操作時(shí),可以通過(guò)全局變量@@rowcount了解表中的行是否受影響,有多少行受影響,因為它記錄了受影響的行數。
  其次,通過(guò)它可以實(shí)現對表插入或更新操作的主鍵外鍵參照完整性??梢詫nserted表與相應的主表在主鍵列上進(jìn)行連接操作所得到的行數跟進(jìn)入觸發(fā)器的全局變量@@rowcount進(jìn)行比較,如果相等,表明對從表插入或更新操作的外鍵新值在主表的主鍵列中已經(jīng)存在,允許對從表操作;否則,要么不允許對從表操作,要么作其他處理。

4 觸發(fā)器的應用實(shí)例
  我們先作一個(gè)約定:假設現在有一個(gè)主表Base(id,name)和一個(gè)從表Sales(id,account),Base中的id為主鍵,那么Sales中的id為外鍵。下面舉例說(shuō)明上述的3種觸發(fā)器。
4.1 Delete觸發(fā)器
  現在準備刪除主表Base中的一行,由于Base是主表,所以希望能把從表Sales中的相關(guān)記錄一起刪去,以保持參照完整性,為此,創(chuàng )建Delete觸發(fā)器如下:
  create trigger trg-d-base
    on base for delete
  as
  if @@rowcount=0
    return
  delete sales from sales s, deleted d
    where s. id=d.id
  return
4.2 Insert觸發(fā)器
  現在準備在從表ales中插入一行,希望檢查新的id是否合法,即是否在主表Base的主鍵列中存在,以保持參照完整性,為此,創(chuàng )建Insert觸發(fā)器如下:
  create trigger trg-iu-sales
    on sales for insert, update
  as
  declare @n-row int
  select @n-row=@@rowcount
  if @n-row=0
    return
  if (select count(*) from base b, inserted i
  where b.id=i.id)!=@n-row
  begin
    raiserror 31113“不能插入在主表中不存在的外鍵。”
    rollback transaction
    return
  end
  return
4.3 Update觸發(fā)器
  現在準備更新主表Base中的一個(gè)id,由于Base是主表,所以希望能把從表Sales中的相關(guān)記錄的id一起更新,以保持參照完整性,為此,創(chuàng )建Update觸發(fā)器如下:
  create trigger trg-u-base
    on base for update
  as
  declare @n-row int
  select @n-row=@@rowcount
  if @n-row=0
    return
  if update(id)
  begin
  if @n-row>1
  begin
    raiserror 31113“不能把多個(gè)主鍵更新成同一個(gè)值。”
    rollback transaction
    return
  end
  update sales set s.id=i.id
    from sales s, inserted i, deleted d
    where s. id=d.id
  end
  return

作者單位:楊基鎮 廣東省汕頭市國土房產(chǎn)局產(chǎn)權科工程師(515041)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
SQL觸發(fā)器原理介紹
server觸發(fā)器示例
sql觸發(fā)器(insert,update,delete)
觸發(fā)器
觸發(fā)器trigger記錄前后數據變化
SQL 2000中的觸發(fā)器使用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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