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 地址创建触发器
在插入客户之前创建触发器 create_date_of_customer
对于每一行
SET NEW.cus_crtd_dt = NOW();
NEW.cus_updt_dt = NOW();
最佳答案
您的问题没有说明。但是根据我的理解,以下内容会对您有所帮助。你见过https://msdn.microsoft.com/en-us/library/ms189799.aspx吗?
已编辑
这是针对您已编辑的问题。要获取 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;
关于mysql - 创建一个触发器,用于将客户端 ip 地址放入 MySQL 的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41356644/