6ES7331-7KF02-9AJ0模擬量輸入模塊
6ES7331-7KF02-9AJ0模擬量輸入模塊
觸發(fā)器是邏輯電路的基本單元電路,具有記憶功能,可用于二進制數(shù)據(jù)儲存,記憶信息等。
[1] SQL Server 包括三種常規(guī)類型的觸發(fā)器:DML 觸發(fā)器、DDL 觸發(fā)器和登錄觸發(fā)器。
(在邏輯電路中根據(jù)邏輯功能不同,可分為RS觸發(fā)器,D觸發(fā)器,同步觸發(fā)器等)
DML觸發(fā)器
當(dāng)數(shù)據(jù)庫中表中的數(shù)據(jù)發(fā)生變化時,包括insert,update,delete任意操作,如果我們對該表寫了對應(yīng)的DML觸發(fā)器,那么該觸發(fā)器自動執(zhí)行。DML觸發(fā)器的主要作用在于強制執(zhí)行業(yè) 務(wù)規(guī)則,以及擴展Sql Server約束,默認值等。因為我們知道約束只能約束同一個表中的數(shù)據(jù),而觸發(fā)器中則可以執(zhí)行任意Sql命令。
DDL觸發(fā)器
它是Sql Server2005新增的觸發(fā)器,主要用于審核與規(guī)范對數(shù)據(jù)庫中表,觸發(fā)器,視圖等結(jié)構(gòu)上的操作。比如在修改表,修改列,新增表,新增列等。它在數(shù)據(jù)庫結(jié)構(gòu)發(fā)生變化時執(zhí)行,我們主要用它來記錄數(shù)據(jù)庫的修改過程,以及限制程序員對數(shù)據(jù)庫的修改,比如不允許刪除某些表等。
登錄觸發(fā)器
登錄觸發(fā)器將為響應(yīng) LOGIN 事件而激發(fā)存儲過程。與 SQL Server 實例建立用戶會話時將引發(fā)此事件。登錄觸發(fā)器將在登錄的身份驗證階段完成之后且用戶會話實際建立之前激發(fā)。因此,來自觸發(fā)器內(nèi)部且通常將到達用戶的所有消息(例如錯誤消息和來自 PRINT 語句的消息)會傳送到 SQL Server 錯誤日志。如果身份驗證失敗,將不激發(fā)登錄觸發(fā)器。編輯
觸發(fā)器可通過數(shù)據(jù)庫中的相關(guān)表實現(xiàn)級聯(lián)更改,不過,通過級聯(lián)引用完整性約束可以更有效地執(zhí)行這些更改。觸發(fā)器可以強制用比CHECK約束定義的約束更為復(fù)雜的約束。與 CHECK 約束不同,觸發(fā)器可以引用其它表中的列。例如,觸發(fā)器可以使用另一個表中的 SELECT 比較插入或更新的數(shù)據(jù),以及執(zhí)行其它操作,如修改數(shù)據(jù)或顯示用戶定義錯誤信息。觸發(fā)器也可以評估數(shù)據(jù)修改前后的表狀態(tài),并根據(jù)其差異采取對策。一個表中的多個同類觸發(fā)器(INSERT、UPDATE 或 DELETE)允許采取多個不同的對策以響應(yīng)同一個修改語句。
觸發(fā)器和約束編輯
約束和觸發(fā)器在特殊情況下各有優(yōu)勢。觸發(fā)器的主要好處在于它們可以包含使用 Transact-SQL 代碼的復(fù)雜處理邏輯。因此,觸發(fā)器可以支持約束的所有功能;但它在所給出的功能上并不總是 的方法。實體完整性總應(yīng)在 級別上通過索引進行強制,這些索引或是 PRIMARY KEY 和 UNIQUE 約束的一部分,或是在約束之外獨立創(chuàng)建的。假設(shè)功能可以滿足應(yīng)用程序的功能需求,域完整性應(yīng)通過 CHECK 約束進行強制,而引用完整性(RI) 則應(yīng)通過 FOREIGN KEY 約束進行強制。在約束所支持的功能無法滿足應(yīng)用程序的功能要求時,觸發(fā)器就極為有用。
例如:除非 REFERENCES 子句定義了級聯(lián)引用操作,否則 FOREIGN KEY 約束只能以與另一列中的值*匹配的值來驗證列值。
CHECK 約束只能根據(jù)邏輯表達式或同一表中的另一列來驗證列值。如果應(yīng)用程序要求根據(jù)另一個表中的列驗證列值,則必須使用觸發(fā)器。約束只能通過標準的系統(tǒng)錯誤信息傳遞錯誤信息。如果應(yīng)用程序要求使用(或能從中獲益)自定義信息和較為復(fù)雜的錯誤處理,則必須使用觸發(fā)器。
觸發(fā)器可通過數(shù)據(jù)庫中的相關(guān)表實現(xiàn)級聯(lián)更改;不過,通過級聯(lián)引用完整性約束可以更有效地執(zhí)行這些更改。觸發(fā)器可以禁止或回滾違反引用完整性的更改,從而取消所嘗試的數(shù)據(jù)修改。當(dāng)更改外鍵且新值與主鍵不匹配時,此類觸發(fā)器就可能發(fā)生作用。例如,可以在 titleauthor.title_id 上創(chuàng)建一個插入觸發(fā)器,使它在新值與 titles.title_id 中的某個值不匹配時回滾一個插入。不過,通常使用 FOREIGN KEY 來達到這個目的。如果觸發(fā)器表上存在約束,則在 INSTEAD OF 觸發(fā)器執(zhí)行后但在 AFTER 觸發(fā)器執(zhí)行前檢查這些約束。如果約束破壞,則回滾 INSTEAD OF 觸發(fā)器操作并且不執(zhí)行 AFTER 觸發(fā)器。
觸發(fā)器到底可不可以在視圖上創(chuàng)建 在 SQL Server™ 聯(lián)機叢書中,是沒有說觸發(fā)器不能在視圖上創(chuàng)建的, 并且在語法解釋中表明:在 CREATE TRIGGER 的 ON 之后可以是視圖。 然而,事實似乎并不是如此,很多也說觸發(fā)器不能在視圖上創(chuàng)建。我也專門作了測試,的確如此,不管是普通視圖還是索引視圖,都無法在上面創(chuàng)建觸發(fā)器,真的是這樣嗎?
但是無可厚非的是:當(dāng)在臨時表或系統(tǒng)表上創(chuàng)建觸發(fā)器時會遭到拒絕。
深刻理解 FOR CREATE TRIGGER 語句的 FOR 關(guān)鍵字之后可以跟 INSERT、UPDATE、DELETE 中的一個或多個,也就是說在其它情況下是不會觸發(fā)觸發(fā)器的, 包括 SELECT、TRUNCATE、WRITETEXT、UPDATETEXT。
相關(guān)內(nèi)容 一個有趣的應(yīng)用我們看到許多注冊系統(tǒng)在注冊后都不能更改用戶名,但這多半是由應(yīng)用程序決定的, 如果直接打開數(shù)據(jù)庫表進行更改,同樣可以更改其用戶名, 在觸發(fā)器中利用回滾就可以巧妙地實現(xiàn)無法更改用戶名……詳細內(nèi)容 觸發(fā)器內(nèi)部語句出錯時…… 這種情況下,前面對數(shù)據(jù)更改操作將會無效。舉個例子,在表中插入數(shù)據(jù)時觸發(fā)觸發(fā)器,而觸發(fā)器內(nèi)部此時發(fā)生了運行時錯誤,那么將返回一個錯誤值,并且拒絕剛才的數(shù)據(jù)插入。不能在觸發(fā)器中使用的語句 觸發(fā)器中可以使用大多數(shù) T-SQL 語句,但如下一些語句是不能在觸發(fā)器中使用的。
CREATE 語句,如:CREATE DATABASE、CREATE T觸發(fā)器功能強大,輕松可靠地實現(xiàn)許多復(fù)雜的功能,為什么又要慎用呢。觸發(fā)器本身沒有過錯,但由于我們的濫用會造成數(shù)據(jù)庫及應(yīng)用程序的維護困難。在數(shù)據(jù)庫操作中,我們可以通過關(guān)系、觸發(fā)器、存儲過程、應(yīng)用程序等來實現(xiàn)數(shù)據(jù)操作…… 同時規(guī)則、約束、缺省值也是保證數(shù)據(jù)完整性的重要保障。如果我們對觸發(fā)器過分的依賴,勢必影響數(shù)據(jù)庫的結(jié)構(gòu),同時增加了維護的復(fù)雜程度。
AB2711-K9C1電子產(chǎn)品
AB1769-IM12模塊
力士樂PPC-R22.1(帶卡)配件
AB6RA7013-6DV62-0電子產(chǎn)品
SCHNEIDER171CCC96030配件
西門子6RY1243-0BA0配件
西門子6ES7972-0BB12-0XA0配件
施耐德170DNT11000電子產(chǎn)品
SIEMENS3TF5222-0XM0 AC110V配件
發(fā)那科A06B-6093-H152電子產(chǎn)品
PHIHONGPSA-1509U配件
西門子6GK1503-2CB00電子產(chǎn)品
XYCOM3515KPM配件
SIEMENS6ES7151-1BA02-0AB0配件
SIEMENS6EP1333-2AA01配件
SIEMENS6ES7131-4BF00-OAA0配件
SIEMENS6ES7132-4BF00-OAA0配件
SIEMENS6ES7134-4GB11-0AB0配件
SIEMENS6ES7134-4GD00-0AB0配件
SIEMENS6ES7135-4GB01-0AB0配件
SIEMENS6ES7138-4CA01-0AA0配件
SIEMENS6ES7134-4FB01-0AB0配件
AB1746-P2模塊
臺達DPS-220DB-1 A電子產(chǎn)品
" Siemens"6AV7893-0AB00-1AB0配件
" Siemens"6SL3362-0AF00-0AA1配件
西門子1P6RA7078-6DV62-0-Z G95+K00+K01+K11電子產(chǎn)品
AB1756-EN2T模塊
西門子153-2BA01-0XB0模塊
西門子6SL3362-0AF01-0AA1風(fēng)扇
SIEMENS6SE6440-2AB17-5AA1配件
FOXBOROE69F-BI2配件
FOXBOROE69F-BI3配件
ABBFPBA-01模塊
ABBDSAB-01C配件
ABBDSMB-01C配件
西門子6SE7035-4HF85-0EA0配件
邁創(chuàng)MATROX MOR/2VD采集卡
ABBSDCS-CON-4配件
AB1326AB-B515G-21配件
施耐德170ANR12091全新配件
PHIHONGPSA-110-401-1電源
施耐德172PNN21022翻新配件
PHIHONGPSA-1509U配件
IAIPCON-CA-42PWAI-NP-2-0配件
西門子PROV3UF7010-1AU00-0電機保護器
ABBACS550-01-031A(含面板)配件
WATLOWTLM-8配件
艾默生CMF050H523N3ENEZZZ流量計
AB1794-TB3G配件
GEIC200MDL650電子產(chǎn)品
KOLLNORGEN 伺服驅(qū)動器CP320260配件
INTEL CPU 風(fēng)扇E30307-001 12V 0.14A配件
西門子A5E00684817配件
安川SGDS-30A01A驅(qū)動器
松下MSM8A1A1A電機
SIEMENS6SE7031-2EP85-0AA0配件
SIEMENS6SE7021-3TP50配件
SIEMENS6SE7021-0TP50配件
SIEMENS6SE7014-0TP50配件
SIEMENS6SE7012-0TP50配件
松下MFA050HA5NSC配件
SIEMENS6ES7 313-6CG04-0AB0電子產(chǎn)品
SIEMENS6EP1437-3BA10配件
SIEMENS6GK1500-3AA00配件
SIEMENS6ES7151-1AB05-0AB0配件
SIEMENS6ES7138-4DA04-0AB0配件
力士樂PPC-R22.1(帶卡)配件
AB140A-C2A-B40開關(guān)
AB140A-C2A-B25開關(guān)
GEUR9EH模塊
GEUR8LH模塊
GEUR8NH模塊
AB 0.75KW/1.0HP CAT NO.22F-D2P5N103電機變頻器
西門子6SL3224-0BE33-7UA0變頻器
西門子6SL3224-0BE35-5UA0變頻器
太平洋SCE904AN-002-01配件
SKKTSKKD 162/16電子產(chǎn)品
SKKTSKKT 162/16 E電子產(chǎn)品
三菱MR-J3BAT/3.6V配件
SICKUM18-51111配件
ENERPACB-3006配件
SIEMENS6ES7322-1HH01-0AA0電子產(chǎn)品
SIEMENS6ES7307-1EA00-0AA0電子產(chǎn)品
ANSALDOSPAM035U1D電子產(chǎn)品
西門子C98043-A7002-L4電子產(chǎn)品
三菱CM600DU-24NFH電子產(chǎn)品
三菱CM400DU-24NFH電子產(chǎn)品
三菱CM200DU-24NFH電子產(chǎn)品
SIEMENS6SE7024-1EP85-0AA0驅(qū)動
SIEMENS1FK7101-5AF71-1EG3電機
SIEMENS1FK7083-5AF71-1EG3電機
SCHNEIDERXMLP250BC22配件
ABMVI56-PDPMV1模塊
HONEYWELL32004871-001配件
SIEMENS6AV6643-0CB01-1AX1配件
西門子6DD1661-0AE1電子產(chǎn)品
西門子6SE7090-0XX84-0AB0電子產(chǎn)品
西門子6SL3120-1TE28-5AA3電子產(chǎn)品