gv天堂gv无码男同在线,欧美视频你懂的,毛片一级毛片毛片一级一级毛毛片,亚洲黄色视频免费播放,满18岁免费看的尤物视频,日本欧美三级片免费看,亚洲综合伊人影视在线播放

  • 首 頁
  • 采購市場
  • 企業(yè)查詢
  • 營銷建站
  • 營銷推廣
  • 行業(yè)資訊
  • 發(fā)布信息
  • 觸發(fā)器的工作原理是什么?

    懸賞分:20|

    其 他 回 答共2條

    1樓

    基本RS觸發(fā)器原理
    1 基本RS觸發(fā)器的工作原理
    基本RS觸發(fā)器的電路如圖1(a)所示。它是由兩個與非門,按正反饋方式閉合而成,也可以用兩個或非門按正反饋方式閉合而成。圖(b)是基本RS觸發(fā)器邏輯符號。基本RS觸發(fā)器也稱為閂鎖(Latch)觸發(fā)器。
    (a) (b)
    圖1 基本RS觸發(fā)器電路圖和邏輯符號
    定義A門的一個輸入端為Rd 端,低電平有效,稱為直接置“0”端,或直接復(fù)位端(Reset),此時 Sd 端應(yīng)為高電平;B門的一個輸入端為 Sd 端,稱為直接置“1”端,或直接置位端(Set),此時 Rd 端應(yīng)為高電平。我們定義一個與非門的輸出端為基本RS觸發(fā)器的輸出端Q ,圖中為B門的輸出端。另一個與非門的輸出端為 Q 端,這兩個端頭的狀態(tài)應(yīng)該相反。因基本RS觸發(fā)器的電路是對稱的,定義A門的輸出端為Q端, 還是定義B門的輸出端為Q端都是可以的。一旦Q端確定, Rd和 Sd 端就隨之確定,再不能任意更改。
    2 兩個穩(wěn)態(tài)
    這種電路結(jié)構(gòu),可以形成兩個穩(wěn)態(tài),即
    Q =1,Q=0,Q=0,Q =1
    當(dāng) Q=1時,Q=1和 Rd =1決定了A門的輸出,即Q=0 , Q=0反饋回來又保證了Q=1 ;當(dāng) Q=0時,Q=1,Q=1和 Sd =1決定了B門的輸出,即 Q=0,Q=0又保證了Q =1 。
    在沒有加入觸發(fā)信號之前,即 Rd和Sd 端都是高電平,電路的狀態(tài)不會改變。
    3 觸發(fā)翻轉(zhuǎn)
    電路要改變狀態(tài)必須加入觸發(fā)信號,因是與非門構(gòu)成的基本RS觸發(fā)器,所以,觸發(fā)信號是低電平有效。若是由或非門構(gòu)成的基本RS觸發(fā)器,觸發(fā)信號是高電平有效。
    Rd和Sd 是一次信號,只能一個一個的加,即它們不能同時為低電平。
    在 Rd 端加低電平觸發(fā)信號,Rd =0,于是Q =1 , Q =1和Sd =1決定了Q=0 ,觸發(fā)器置“0”。 Rd 是置“0”的觸發(fā)器信號。
    Q=0以后,反饋回來就可以替代Rd =0的作用, Rd=0就可以撤消了。所以, Rd 不需要長時間保留,是一個觸發(fā)器信號。
    在Sd 端加低電平觸發(fā)信號,Sd =0,于是Q =1 , Q =1和 Rd =1決定了Q=0 ,觸發(fā)器置“1”。但Q=0 反饋回來, Sd =0才可以撤消, Sd是置“1”的觸發(fā)器信號。
    如果是由或非門構(gòu)成的基本RS觸發(fā)器,觸發(fā)信號是高電平有效。此時直接置“0”端用符號Rd;直接置“1”端用符號Sd。
    4 真值表和特征方程
    以上過程,可以用真值表來描述,見上表。表中的Qn和 Qn表示觸發(fā)器的現(xiàn)在狀態(tài),簡稱現(xiàn)態(tài);Qn+1和Qn+1表示觸發(fā)器在觸發(fā)脈沖作用后輸出端的新狀態(tài),簡稱次態(tài)。對于新狀態(tài)Qn+1而言,Qn也稱為原狀態(tài)。
    上表真值表 表中Qn=Qn+1表示新狀態(tài)等于原狀態(tài),即觸發(fā)器沒有翻轉(zhuǎn),觸發(fā)器的狀態(tài)保持不變。必須注意的是,一般書上列出的基本RS觸發(fā)器的真值表中,當(dāng) Rd =0、 Sd =0時,Q的狀態(tài)為任意態(tài)。這是指當(dāng) Rd 、Sd 同時撤消時,Q端狀態(tài)不定。若當(dāng) Rd =0、Sd =0時,Q =1,狀態(tài)都為“1”,是確定的。但這一狀態(tài)違背了觸發(fā)器Q端和 Q端狀態(tài)必須相反的規(guī)定,是不正常的工作狀態(tài)。若Rd 、Sd不同時撤消時,Q端狀態(tài)是確定的,但若Rd 、Sd同時撤消時,Q端狀態(tài)是不確定的。由于與非門響應(yīng)有延遲,且兩個門延遲時間不同,這時哪個門先動做了,觸發(fā)器就保持該狀態(tài),這一點一定不要誤解。但具體可見例1 。
    把上表所列邏輯關(guān)系寫成邏輯函數(shù)式,則得到
    利用約束條件將上式化簡,于是得到特征方程
    知識庫標(biāo)簽: 觸發(fā)器   |列兵

    2樓


    一、創(chuàng)建一個簡單的觸發(fā)器
    觸發(fā)器是一種特殊的存儲過程,類似于事件函數(shù),SQL Server? 允許為 INSERT、UPDATE、DELETE 創(chuàng)建觸發(fā)器,即當(dāng)在表中插入、更新、刪除記錄時,觸發(fā)一個或一系列 T-SQL語句。
    觸發(fā)器可以在查詢分析器里創(chuàng)建,也可以在表名上點右鍵->“所有任務(wù)”->“管理觸發(fā)器”來創(chuàng)建,不過都是要寫 T-SQL 語句的,只是在查詢分析器里要先確定當(dāng)前操作的數(shù)據(jù)庫。
    創(chuàng)建觸發(fā)器用 CREATE TRIGGER
    CREATE TRIGGER 觸發(fā)器名稱
    ON 表名
    FOR INSERT、UPDATE 或 DELETE
    AS
    T-SQL 語句
    注意:觸發(fā)器名稱是不加引號的。
    如下是聯(lián)機(jī)叢書上的一個示例,當(dāng)在 titles 表上更改記錄時,發(fā)送郵件通知 MaryM。
    CREATE TRIGGER reminder
    ON titles
    FOR INSERT, UPDATE, DELETE
    AS
    EXEC master..xp_sendmail 'MaryM',
    'Don''t forget to print a report for the distributors.'
    二、刪除觸發(fā)器
    用查詢分析器刪除
    在查詢分析器中使用 drop trigger 觸發(fā)器名稱 來刪除觸發(fā)器。
    也可以同時刪除多個觸發(fā)器:drop trigger 觸發(fā)器名稱,觸發(fā)器名稱...
    注意:觸發(fā)器名稱是不加引號的。在刪除觸發(fā)器之前可以先看一下觸發(fā)器是否存在:
    if Exists(select name from sysobjects where name=觸發(fā)器名稱 and xtype='TR')
    用企業(yè)管理器刪除
    在企業(yè)管理器中,在表上點右鍵->“所有任務(wù)”->“管理觸發(fā)器”,選中所要刪除的觸發(fā)器,然后點擊“刪除”。
    三、重命名觸發(fā)器
    用查詢分析器重命名
    exec sp_rename 原名稱, 新名稱
    sp_rename 是 SQL Server? 自帶的一個存儲過程,用于更改當(dāng)前數(shù)據(jù)庫中用戶創(chuàng)建的對象的名稱,如表名、列表、索引名等。
    用企業(yè)管理器重命名
    在表上點右鍵->“所有任務(wù)”->“管理觸發(fā)器”,選中所要重命名的觸發(fā)器,修改觸發(fā)器語句中的觸發(fā)器名稱,點擊“確定”。
    四、more....
    INSTEAD OF
    執(zhí)行觸發(fā)器語句,但不執(zhí)行觸發(fā)觸發(fā)器的 SQL 語句,比如試圖刪除一條記錄時,將執(zhí)行觸發(fā)器指定的語句,此時不再執(zhí)行 delete 語句。例:
    create trigger f
    on tbl
    instead of delete
    as
    insert into Logs...
    IF UPDATE(列名)
    檢查是否更新了某一列,用于 insert 或 update,不能用于 delete。例:
    create trigger f
    on tbl
    for update
    as
    if update(status) or update(title)
    sql_statement --更新了 status 或 title 列
    inserted、deleted
    這是兩個虛擬表,inserted 保存的是 insert 或 update 之后所影響的記錄形成的表,deleted 保存的是 delete 或 update 之前所影響的記錄形成的表。例:
    create trigger tbl_delete
    on tbl
    for delete
    as
    declare @title varchar(200)
    select @title=title from deleted
    insert into Logs(logContent) values('刪除了 title 為:' + title + '的記錄')
    說明:如果向 inserted 或 deleted 虛擬表中取字段類型為 text、image 的字段值時,所取得的值將會是 null。
    五、查看數(shù)據(jù)庫中所有的觸發(fā)器
    在查詢分析器中運行:
    use 數(shù)據(jù)庫名
    go
    select * from sysobjects where xtype='TR'
    sysobjects 保存著數(shù)據(jù)庫的對象,其中 xtype 為 TR 的記錄即為觸發(fā)器對象。在 name 一列,我們可以看到觸發(fā)器名稱。
    六、sp_helptext 查看觸發(fā)器內(nèi)容
    用查詢分析器查看
    use 數(shù)據(jù)庫名
    go
    exec sp_helptext '觸發(fā)器名稱'
    將會以表的樣式顯示觸發(fā)器內(nèi)容。
    除了觸發(fā)器外,sp_helptext 還可以顯示 規(guī)則、默認(rèn)值、未加密的存儲過程、用戶定義函數(shù)、視圖的文本
    用企業(yè)管理器查看
    在表上點右鍵->“所有任務(wù)”->“管理觸發(fā)器”,選擇所要查看的觸發(fā)器存儲過程
    七、sp_helptrigger 用于查看觸發(fā)器的屬性
    sp_helptrigger 有兩個參數(shù):第一個參數(shù)為表名;第二個為觸發(fā)器類型,為 char(6) 類型,可以是 INSERT、UPDATE、DELETE,如果省略則顯示指定表中所有類型觸發(fā)器的屬性。
    例:
    use 數(shù)據(jù)庫名
    go
    exec sp_helptrigger tbl
    八、遞歸、嵌套觸發(fā)器
    遞歸分兩種,間接遞歸和直接遞歸。我們舉例解釋如下,假如有表1、表2名稱分別為 T1、T2,在 T1、T2 上分別有觸發(fā)器 G1、G2。
    ?間接遞歸:對 T1 操作從而觸發(fā) G1,G1 對 T2 操作從而觸發(fā) G2,G2 對 T1 操作從而再次觸發(fā) G1...
    ?直接遞歸:對 T1 操作從而觸發(fā) G1,G1 對 T1 操作從而再次觸發(fā) G1...
    嵌套觸發(fā)器
    類似于間接遞歸,間接遞歸必然要形成一個環(huán),而嵌套觸發(fā)器不一定要形成一個環(huán),它可以 T1->T2->T3...這樣一直觸發(fā)下去,最多允許嵌套 32 層。
    設(shè)置直接遞歸
    默認(rèn)情況下是禁止直接遞歸的,要設(shè)置為允許有兩種方法:
    ?T-SQL:exec sp_dboption 'dbName', 'recursive triggers', true
    ?EM:數(shù)據(jù)庫上點右鍵->屬性->選項。
    設(shè)置間接遞歸、嵌套
    默認(rèn)情況下是允許間接遞歸、嵌套的,要設(shè)置為禁止有兩種方法:
    ?T-SQL:exec sp_configure 'nested triggers', 0 --第二個參數(shù)為 1 則為允許
    ?EM:注冊上點右鍵->屬性->服務(wù)器設(shè)置。
    九、觸發(fā)器回滾
    我們看到許多注冊系統(tǒng)在注冊后都不能更改用戶名,但這多半是由應(yīng)用程序決定的, 如果直接打開數(shù)據(jù)庫表進(jìn)行更改,同樣可以更改其用戶名,在觸發(fā)器中利用回滾就可以巧妙地實現(xiàn)無法更改用戶名。
    use 數(shù)據(jù)庫名
    go
    create trigger tr
    on 表名
    for update
    as
    if update(userName)
    rollback tran
    關(guān)鍵在最后兩句,其解釋為:如果更新了 userName 列,就回滾事務(wù)。
    十、禁用、啟用觸發(fā)器
    禁用:alter table 表名 disable trigger 觸發(fā)器名稱
    啟用:alter table 表名 enable trigger 觸發(fā)器名稱
    如果有多個觸發(fā)器,則各個觸發(fā)器名稱之間用英文逗號隔開。
    如果把“觸發(fā)器名稱”換成“ALL”,則表示禁用或啟用該表的全部觸發(fā)器。
    知識庫標(biāo)簽: 觸發(fā)器   |列兵

    我來回答這個問題

    立即登陸回答獲取會員積分,提高用戶級別
    友情鏈接:
    Copyright © 商名網(wǎng) All Rights Reserved.