2016-12-10 43 views
1

我的表(Report_table)包含以下列: ID,標題,文本,日期。如何使用觸發器在MySQL中插入空列的當前日期?

通過我的應用程序輸入標題和文本。 插入時數據庫會自動設置ID,但是我也想使用觸發器自動插入每個報告的日期。

我有點困惑。這裏是我的建議,但是這是行不通的:

DELIMITER // 
CREATE TRIGGER trRDate 
BEFORE INSERT ON Report_table 
FOR EACH ROW 

BEGIN 

IF (Date IS NULL or Date = '') THEN 
SET NEW.Date = CURDATE(); 
END IF; 

END; // 
DELIMITER ; 

所以基本上,如果日期欄是空的(這是),則觸發應該插入日期。

回答

0

在MySQL中,觸發器無法修改調用它的表,所以您當前的方法將無法工作。但是從MySQL 5.6.5開始,您可以爲datetime列指定一個動態默認值。

您可以在Report_table表改變Date列如下:

ALTER TABLE Report_table CHANGE `Date` `Date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 

這意味着,如果你不指定插入過程中的日期Report_table當前時間戳將作爲默認值。

另一個同樣有用的選項是從應用程序中分配默認日期。

相關問題