2016-12-28 293 views
1
CREATE TABLE `project` (
    `prj_id` int(11) NOT NULL AUTO_INCREMENT, 
    `prj_name` varchar(400) NOT NULL, 
    `prj_customer_id` int(11) NOT NULL, 
    `prj_url` varchar(400) NOT NULL, 
    `prj_description` varchar(400) NOT NULL, 
    `prj_status` int(11) NOT NULL, 
    `prj_member_id` int(11) NOT NULL, 
    `prj_crtd_by` varchar(50) NOT NULL, 
    `prj_crtd_dt` datetime NOT NULL, 
    `prj_updt_by` varchar(50) NOT NULL, 
    `prj_updt_dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `prj_last_ip` varchar(50) NOT NULL, 
    PRIMARY KEY (`prj_id`), 
    KEY `fk_project_customer_customer_id` (`prj_customer_id`), 
    KEY `fk_project_member_member_id` (`prj_member_id`), 
    CONSTRAINT `fk_project_customer_customer_id` FOREIGN KEY (`prj_customer_id`) REFERENCES `customer` (`cus_id`), 
    CONSTRAINT `fk_project_member_member_id` FOREIGN KEY (`prj_member_id`) REFERENCES `member` (`mem_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

我想爲這個表項目創建三個列的觸發器。我想爲prj_crtd_dt創建觸發器,這些列創建時插入日期,prj_updt_dt插入更新日期,prj_last_ip必須更新創建系統的IP地址。創建一個觸發器獲取客戶端IP地址到MySQL列中

我創建觸發器的日期欄,我想知道如何創建一個IP地址 CREATE TRIGGER create_date_of_customer BEFORE INSERT ON customer FOR EACH ROW SET NEW.cus_crtd_dt = NOW(); NEW.cus_updt_dt = NOW();

+0

稍微更具可讀性。 – filiprem

回答

0

沒有說明你的問題。但根據我的理解,以下內容將對您有所幫助。你見過https://msdn.microsoft.com/en-us/library/ms189799.aspx嗎?

EDITED

這就爲您編輯question.For獲取ip地址,你必須啓用CMDSHELL。但是,啓用xp_cmdshell具有安全缺陷,我不會建議您這樣做。如果你可以使用服務器名,而不是服務器的IP那就試試這個,

SET NEW.cus_crtd_dt = NOW(); 
    NEW.cus_updt_dt = NOW(); 
    NEW.cus_last_ip= SERVERPROPERTY('MachineName'); 

或此,

SET NEW.cus_crtd_dt = NOW(); 
    NEW.cus_updt_dt = NOW(); 
    NEW.cus_last_ip= @@SERVERNAME; 
+0

你可以在評論中提到這個,而不是答案;) – Susang

+0

CREATE TRIGGER create_date_of_customer BEFORE INSERT ON people FOR EACH ROW SET NEW.peo_crtd_dt = NOW(); NEW.peo_updt_by = NOW(); NEW.peo_last_ip = SERVERPROPERTY('MachineName'); 靜態分析 在分析過程中發現1個錯誤。 無法識別的語句類型。 (附近的 「新」 在位置0) SQL查詢: NEW.peo_updt_by = NOW() MySQL表示:文件 #1064 - 你在你的SQL語法錯誤;檢查與您的MariaDB服務器版本相對應的手冊,以便在第1行'NEW.peo_updt_by = NOW()'附近使用正確的語法。 – Vidhya

+0

您能幫助解決這個問題@Suraz – Vidhya