For Quick and plain answer:您無法顯示來自觸發器的消息。你可能只會拋出錯誤。
你有點不知道你在問題中使用觸發器的原因。我們都已經通過了這個級別,所以不用擔心。當我們使用觸發器時,你已經理解了語法,但不知道他們能做什麼,不能做什麼。
觸發器會做有關數據庫,並只(對於你的情況前的UPDATE)的東西。 這意味着觸發器無法在屏幕上顯示任何消息。你只能處理數據庫的工作人員,並不是所有的行爲都允許這樣做,或者甚至不建議採取一些行動! 這是理論部分。
現在就爲您解決問題。 你可以做的唯一一件事就是知道什麼時候觸發器已經工作(這意味着什麼時候new.qua < 50)或基本上檢查任何其他觸發器是以下內容。 (只是一個小的快速解決方案):
- 您需要創建一個表來處理 觸發器的所有日誌記錄。
- 在其中添加一個ID字段,一個descr字段,該字段將保存觸發器的動作 。 BefUpdate,BefInsert等 的另一個字段可能觸發日誌記錄和反基因,否則 您希望稍後顯示在應用程序中。
- 然後在if條件中,您正在使用寫入並插入 狀態表來填充新(日誌記錄)表中的信息。
- 稍後在您的應用程序中選擇該日誌記錄表以查看消息。
這是一種有用且快速的日誌記錄方式,不僅是觸發器,還有函數(存儲過程)。 Judt作爲參考,我給你用CREATE的示例代碼和你的觸發器的INSERT語句。
CREATE TABLE LOGGER (
ID BIGINT PRIMARY KEY AUTO_INCREMENT,
DESCR_ACTIVITY VARCHAR(10),
ACTIVITY VARCHAR(50),
DT TIMESTAMP,
CONDITIONVALUE VARCHAR(50)
)
在代碼中的IF現在讓它爲:
if new.qty < 50 then
INSERT INTO LOGGER VALUES ('BEFINS','CHECKING QUA',NULL,'QUANTITY IS LOWER THAN 50')
end if;
,甚至從工作臺或從應用程序U可以只:
SELECT * FROM LOGGER
看測井公司。
但是,如果我從閱讀困惑,你只想拋出異常u能讀了關於引發錯誤MySQL文檔: enter link description here
什麼ü可以做的是在你的,如果條件寫類似:
if new.qty < 50 then
SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'Lower than 50', MYSQL_ERRNO = 1000;
endif;
什麼ü應始終NOT DO是改變的同桌,一個觸發分配,並在觸發使用不那麼複雜的代碼只是小部分。
希望我幫了一下。
現在我也嘗試在觸發器正文廣告中設置用戶定義的變量,然後從外部讀取它。 –
先生,我會設置所有消息到任何新表,然後如何閱讀和顯示該消息?假設管理員看到該消息並添加新的數量,然後雖然消息將顯示,那麼如何管理所有的東西,我很困惑它..任何想法先生關於它? –
是的,使用UDF更困難。如果可能的話 - 嘗試使用簡單的表格,我添加了一個簡短的例子。 – Devart