① 觸發器問題
沒有用時間觸發的觸發器。觸發器只提供了添加,刪除,更新三種觸發事件,也就是說,只有當你對資料庫表進行添加或者刪除或者更新操作的時候才會觸發觸發器。
按照你寫的觸發器,實際上的結果是,當你對booking表進行任意刪除操作時,判斷表裡的記錄是否達到三天,達到三天則刪除該數據。你寫的這個觸發器的大前提是在該表發生了刪除操作,只有發生了刪除操作,才執行觸發器。
② 有關觸發器的問題
這和你定義觸發器時使用的「關鍵字」有關,如果你使用的是:AFTER,那麼它將是在你執行完語句後,數據已經變化了,它才執行;
如果是:INSTEAD OF,那麼它是在值發生變化之前就執行。
-----------------------------------
after"是引起觸發器執行的語句執行後再執行觸發器,還是整個存儲過程中的語句都執行完後再執行觸發器?
它是數據有發生就執行,不管你存儲過程有沒有執行完。
③ 關於觸發器的問題
Z = Q1+Q2』 ; D1 = D2 = Z ;
初態時,Q1=Q2=0; 所以 Z = 1;
CP 上升沿到來時,Q1 觸發器動作,Q2 觸發器不會動作;
則 Q1=1,Q2=0,---> Z = 1;
CP 下降沿到來時,Q2 觸發器動作,Q1 觸發器不會動作;
則 Q1=1,Q2=1,---> Z = 1;
顯然 Z ≡ 1,那麼 D1 = D2 ≡ 1;
所以此後任何脈沖 CP 的到來,兩個觸發器都不會發生變化;
④ 觸發器問題!!!!
你先看看你的觸發器是否紅叉!紅叉表示編譯未通過!
然後編譯觸發器代碼,看看能否通過?如果不能通過,根據報錯信息去修改!
或者按下面的方式調試:
1.保存觸發器代碼為*.sql文本文件
2 把觸發器刪除!
3 編寫插入一條記錄的sql語句
4 根據3的數據,把觸發器代碼 改寫成可執行的sql語句。
5 寫一個測試代碼塊,包含3,和4的語句,然後執行代碼塊
6. 根據提示的錯誤信息,修改5語句。
7. 再次測試,直到運行通過,
8. 根據5的正確代碼,添加正確的觸發器。
⑤ 基本RS觸發器的一些問題
基本RS觸發器的邏輯方程為:
約束方程:
根據上述兩個式子得到它的四種輸入與輸出的關系:
1.當R端有效(0),S端無效時(1),則Q=0,Q非=1,觸發器置0;
2.當R端無效(1)、S端有效時(0),則Q=1,Q非=0,觸發器置1。
RS觸發器(10張)
如上所述,當觸發器的兩個輸入端加入不同邏輯電平時,它的兩個輸出端Q和Q非有兩種互補的穩定狀態。一般規定觸發器Q端的狀態作為觸發器的狀態。通常稱觸發器處於某種狀態,實際是指它的Q端的狀態。Q=1、Q非=0時,稱觸發器處於1態,反之觸發器處於0態。S=0,R=1使觸發器置1,或稱置位。因置位的決定條件是S=0,故稱S 端為置1端。R=0,S=1時,使觸發器置0,或稱復位。
同理,稱R端為置0端或復位端。若觸發器原來為1態,欲使之變為0態,必須令R端的電平由1變0,S端的電平由0變1。這里所加的輸入信號(低電平)稱為觸發信號,由它們導致的轉換過程稱為翻轉。由於這里的觸發信號是電平,因此這種觸發器稱為電平控制觸發器。從功能方面看,它只能在S和R的作用下置0和置1,所以又稱為置0置1觸發器,或稱為置位復位觸發器。其邏輯符號如圖7.2.1(b)所示。由於置0或置1都是觸發信號低電平有效,因此,S端和R端都畫有小圓圈。
3.當RS端均無效時,觸發器狀態保持不變。
觸發器保持狀態時,輸入端都加非有效電平(高電平),需要觸發翻轉時,要求在某一輸入端加一負脈沖,例如在S端加負脈沖使觸發器置1,該脈沖信號回到高電平後,觸發器仍維持1狀態不變,相當於把S端某一時刻的電平信號存儲起來,這體現了觸發器具有記憶功能。
4.當RS端均有效時,觸發器狀態不確定。
在此條件下,兩個與非門的輸出端Q和Q非全為1,在兩個輸入信號都同時撤去(回到1)後,由於兩個與非門的延遲時間無法確定,觸發器的狀態不能確定是1還是0,因此稱這種情況為不定狀態,這種情況應當避免。從另外一個角度來說,正因為R端和S端完成置0、置1都是低電平有效,所以二者不能同時為0。
此外,還可以用或非門的輸入、輸出端交叉連接構成置0、置1觸發器,其邏輯圖和邏輯符號分別如圖7.2.2(a)和7.2.2(b)所示。這種觸發器的觸發信號是高電平有效,因此在邏輯符號的S端和R端沒有小圓圈。
⑥ mysql 觸發器中遇到的問題
我想應該是你的sql語句有問題, 我也遇到過,在公司的伺服器上測試好了後, 然後放到外面伺服器,報出了錯誤, 後來找到的原因是兩個數據的對sql語句的要求不同, 有的資料庫會把有些sql語句像 select * from table where id= 不會報錯返回的值也是為空, 但有的資料庫會直接報出錯誤,
我不知道是不是這個原因, 祝你盡快解決問題。
⑦ 觸發器的問題
觸發器輸入級是或門,是高電平有效,輸入 A = B = 0 時,輸出 Y 保持原狀態不變。
輸入 A = 1,B = 0 時,Y = 1 ,即 A 是置位輸入端。
輸入 A = 0,B = 1 時,Y = 0,即 B 是復位輸入端。
可見 A、B 的功能是相反的,如果同時有效(A=B=1)就是輸入邏輯錯誤,合格的電路設計是不允許出現這種狀態。
如果由於外界干擾造成短暫出現 A = B = 1 時,則 Y = 0 。
⑧ 關於sql觸發器調試問題
在sql中,觸發器是一種特殊類型的存儲過程,它不同於sql的存儲過程。觸發器主要是通過事件進行觸發而被執行的,而存儲過程可以通過存儲過程名字而被直接調用。當對某一表進行諸如update、
insert、
delete
這些操作時,sql
server
就會自動執行觸發器所定義的sql
語句,從而確保對數據的處理必須符合由這些sql
語句所定義的規則。
觸發器的主要作用就是其能夠實現由主鍵和外鍵所不能保證的復雜的參照完整性和數據的一致性。除此之外,觸發器還有其它許多不同的功能:
(1)強化約束(enforce
restriction)
觸發器能夠實現比check
語句更為復雜的約束。
(2)跟蹤變化(auditing
changes)
觸發器可以偵測資料庫內的操作,從而不允許資料庫中未經許可的指定更新和變化。
(3)級聯運行(cascaded
operation)。
觸發器可以偵測資料庫內的操作,並自動地級聯影響整個資料庫的各項內容。例如,某個表上的觸發器中包含有對另外一個表的數據操作(如刪除,更新,插入)而該操作又導致該表上觸發器被觸發。
(4)存儲過程的調用(stored
procere
invocation)。
為了響應資料庫更新觸,發器可以調用一個或多個存儲過程,甚至可以通過外部過程的調用而在dbms(
資料庫管理系統)本身之外進行操作。
由此可見,觸發器可以解決高級形式的業務規則或復雜行為限制以及實現定製記錄等一些方面的問題。例如,觸發器能夠找出某一表在數據修改前後狀態發生的差異,並根據這種差異執行一定的處理。此外一個表的同一類型(insert、
update、
delete)的多個觸發器能夠對同一種數據操作採取多種不同的處理。
總體而言,觸發器性能通常比較低。當運行觸發器時,系統處理的大部分時間花費在參照其它表的這一處理上,因為這些表既不在內存中也不在資料庫設備上,而刪除表和插入表總是位於內存中。可見觸發器所參照的其它表的位置決定了操作要花費的時間長短。
觸發器的種類
sql
server
2000
支持兩種類型的觸發器:after
觸發器和instead
of
觸發器。其中after
觸發器即為sql
server
2000
版本以前所介紹的觸發器。該類型觸發器要求只有執行某一操作(insert
update
delete)
之後,觸發器才被觸發,且只能在表上定義。可以為針對表的同一操作定義多個觸發器。對於after
觸發器,可以定義哪一個觸發器被最先觸發,哪一個被最後觸發,通常使用系統過程sp_settriggerorder
來完成此任務。
instead
of
觸發器表示並不執行其所定義的操作(insert、
update、
delete),而僅是執行觸發器本身。既可在表上定義instead
of
觸發器,也可以在視圖上定義instead
of
觸發器,但對同一操作只能定義一個instead
of觸發器。
⑨ 關於資料庫觸發器的問題
1. 利用課本上介紹的幾種方法對資料庫的完整性進行定義和檢驗,掌握Constraint,Check等短句的用法;
2. 在SQL Server或者MySQL中練習觸發器的使用;
a) 在northwind資料庫中建立2個表,cust和order,表定義如下:
表cust
列名 類型及長度 其它
CustomerID char(5) 主鍵
Custcity Char(24)
Custname Char(64) 非空
CStatus int 客戶狀態
Cstorage int 庫存量
Cdate Date 日期
表order:
列名 類型及長度 其它
Orderid char(5) 主鍵
OrderNames Char(24) 非空
OStatus int 狀態
Orders int 定購量
Odate Date 日期
b) 要求根據以上表完成以下作業:
① 在cust表中建立刪除觸發器,實現上述2表的級聯刪除。
② 在order表建立insert觸發器,當向order表插入一行,如果cust表中對應記錄status值為1,說明處於准備狀態不能寫入該數據;
③ 在order表上建立一個插入觸發器,在添加一個訂單時,減少cust表的相應貨物的記錄的庫存量。
④ 在order表上建立一個插入觸發器,規定訂單日期(Odate)不能手工修改。
⑤ 要求訂購的物品一定要在倉庫中有的,並且數量足夠。
⑥ 在order表上建立一個插入觸發器,同時插入多行數據時,要求訂購的物品一定要在倉庫中有的。
⑦ 查看觸發器情況:
1. sp_helptrigger 觸發器名
2. sp_helptext 觸發器名
3. 設置某一觸發器的無效和重新有效
4. 刪除觸發器 YES