MySQL觸發器是一種程序,當表發生特定事件時,會自動執行代碼塊。在MySQL中,有時需要為表中的列添加一個唯一的流水號,以確保每個記錄都具有獨一無二的標識符。這時候可以使用觸發器來自動生成流水號。
下面是一個示例代碼來創建MySQL觸發器,實現自動為訂單添加流水號:
DELIMITER $$ CREATE TRIGGER order_trg BEFORE INSERT ON orders FOR EACH ROW BEGIN DECLARE max_no INT; DECLARE cur_no INT; SELECT MAX(order_no) INTO max_no FROM orders; IF max_no IS NULL THEN SET NEW.order_no = 1; ELSE SET cur_no = SUBSTRING(max_no, 6) + 1; SET NEW.order_no = CONCAT('ORDER', LPAD(cur_no, 5, '0')); END IF; END $$ DELIMITER ;
這個觸發器會在每次插入一條新訂單記錄之前執行。它將查詢表orders中流水號最大的記錄,然后從流水號中提取數字部分并加1,最后將生成的新流水號保存在新訂單記錄中。
值得注意的是:
- 該觸發器使用了MySQL的DELIMITER語句,為了避免語句中的分號與DELIMITER定義的分隔符沖突,所以先用DELIMITER定義分隔符,使分號在該語句內變為普通字符。
- 該觸發器定義在表orders上,并使用了BEFORE INSERT觸發事件,即在插入操作之前觸發該觸發器。
- 該觸發器為每個新記錄生成一個獨一無二的流水號。
在構建了這個觸發器之后,每次向表orders中插入一條新記錄,就會自動生成一個唯一的流水號。
上一篇html css的作用域
下一篇html css源碼下載