簡體   English   中英

MySQL-在插入替換日期之前創建觸發器

[英]MySQL - create trigger before insert to replace date

我有一個小問題。

我想在一個表中插入一個帶有時間戳字段的表,該表在MySQL中稱為date

如果我使用帶有str_to_date的查詢進行常規插入,則效果很好。 但是,我的程序不支持在查詢中使用函數。 所以我需要尋找另一種方法,我正在考慮使用觸發器,例如:

DELIMITER //
CREATE TRIGGER audit_oracle_date
BEFORE INSERT ON audit_oracle FOR EACH ROW
BEGIN
SET NEW.date = STR_TO_DATE(NEW.date, "%d %b %Y %H:%i:%s");
END
//
DELIMITER ;

但它不起作用。 觸發器已創建,但是在嘗試輸入類似查詢時:

insert into audit_oracle values("20 Jan 2017 18:01:25","IFOMCP00","sdfdsfds","zerzerez","aaaa","SYSDBA","1","'select * from bla'","ddd","eee","2")

它給我一條錯誤消息,提示“日期字段不能為NULL”

請問如何編寫此觸發器的任何想法?

常規的有效查詢(帶有str_to_date)例如:

insert into audit_oracle values(str_to_date("20 Jan 2017 18:01:25", "%d %b %Y %H:%i:%s"),"IFOMCP00","sdfdsfds","zerzerez","aaaa","SYSDBA","1","blabla","ddd","eee","2")

再次感謝 ! 問候,

不管是好是壞,迄今為止的轉換都是在MySQL處理VALUES時發生的。 問題是MySQL無法識別日期格式。

我的建議是像上一個示例一樣,當場進行轉換。

如果您確實想使用觸發器來執行此操作,則可以添加另一列(即字符串),將其插入該列,然后使用觸發器:

insert into audit_oracle(datestr, . . .)
     values('20 Jan 2017 18:01:25', 'IFOMCP00', 'sdfdsfds', 'zerzerez', 'aaaa', 'SYSDBA', '1', '''select * from bla''', 'ddd', 'eee', '2');

然后您的觸發器將如下所示:

DELIMITER //
CREATE TRIGGER audit_oracle_date
BEFORE INSERT ON audit_oracle FOR EACH ROW
BEGIN
    SET NEW.date = STR_TO_DATE(NEW.datestr, "%d %b %Y %H:%i:%s");
END
//
DELIMITER ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM