第十章觸發器的建立與管理

2021-10-11 03:13:41 字數 2170 閱讀 9214

10.3_instead of觸發器

10.4_inserted、deleted表

10.5_注意事項

觸發器是一種特殊的儲存過程,常常用於實現強制業務規則和資料完整性。觸發器由sql server自動執行,不能由應用程式呼叫,這是它與儲存過程不同的地方,便於保護資料庫的完整性和完全性。

create

trigger trigger_name

[with encryption]

--加密

on table_name

insert

,update

,delete

as--sql過程塊

alter

trigger trigger_name

[with encryption]

--加密

on table_name

forinsert

,update

,delete

as--sql過程塊

drop

trigger trigger_name

create

trigger company_attention

on company

with encryption

forinsert

asprint

'字串'

alter

trigger company_attention

on company

with encryption

forinsert

asprint

'字串'

drop

trigger company_attention

instead of觸發器作用:執行觸發器中的內容,而禁止執行觸發詞觸發器的sql語句

create

trigger

[contract_delete]

on[contract]

instead of

delete

--instead of型別

asbegin

ifexists

(select

count(*

)from contractdetail

where contractid in

(select contractid from deleted)

)--如果這個結果不是0就說明有相關記錄

--列印

print 『合同明細表中有相關記錄,不能刪除』

else

--否則就刪除

delete

from contract

where contractid in

(select contractid from deleted)

end

再次刪除不會再次觸發這個觸發器嗎

inserted表

存放由insert 或update語句的執行而導致要加到該觸發器作用的表中去的任何新行。

deleted表

存放由delete 或update語句的執行而導致要從被該觸發器作用的表中刪除的任何行。

inserted與deleted表中自帶與操作的表同樣的屬性列

sql server 允許建立的儲存過程引用尚不存在的物件。在建立時,只進行語法檢查。 create trigger

必須是批處理中的第一條語句,並且只能應用到乙個表中。

觸發器中不允許以下 transact-sql 語句:alter database 、create database、 disk init 、disk resize 、drop database 、load database 、load log 、reconfigure 、restore database 、restore log

第十章 迭代器

迭代器 我們已經知道,可以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別,如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function。這些可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。...

第十章 建立計算字段

建立在資料庫表中的資料一般不是應用程式所需要的格式。我們需要從資料庫中檢索出轉換 計算或格式化過的資料。計算欄位並不實際存在於資料庫表中,計算欄位是執行時在select語句內建立的。字段 field 基本上與列 column 的意思相同,經常互換使用。不過資料庫一般稱之為列,而術語字段通常用在計算欄...

第十章專案溝通管理

專案溝通管理包括為確保專案資訊及時且恰當地生成 收集 發布 儲存 呼叫並最終處置所需的各個過程。最好使用互動式溝通。有效果 有效率 方法特點 適用場景 正式書面 內容嚴謹 可追溯 易儲存 根據合同進行的溝通 終止某 商的工作 正式口頭 速度快 受眾多,具有正式意義不易追溯 專案啟動會 非正式口頭 效...