简体   繁体   English

创建一个触发器,将客户端IP地址放入MySQL的列中

[英]create a trigger for getting client ip address into column in MySQL

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;

I want to create trigger for three columns for this table project. 我想为这个表项目创建三列的触发器。 I want to create trigger for columns of prj_crtd_dt , which insert the date when it is created, prj_updt_dt which insert the date when it is updated, prj_last_ip which has to update the ip address of the system from where it is created. 我想为prj_crtd_dt列创建触发器,它在创建日期时插入日期, prj_updt_dt在更新日期时插入日期, prj_last_ip必须更新系统的ip地址以及创建日期。

I have created trigger for the date column and I want to know how to create for ip address CREATE TRIGGER create_date_of_customer BEFORE INSERT ON customer FOR EACH ROW SET NEW.cus_crtd_dt = NOW(); NEW.cus_updt_dt = NOW(); 我已经为日期列创建了触发器,我想知道如何为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(); CREATE TRIGGER create_date_of_customer BEFORE INSERT ON customer FOR EACH ROW SET NEW.cus_crtd_dt = NOW(); NEW.cus_updt_dt = NOW();

Your question is not illustrated. 你的问题没有说明。 However according to my understanding the follwing will help you. 但是根据我的理解,下面的内容会对你有所帮助。 Have you seen https://msdn.microsoft.com/en-us/library/ms189799.aspx ? 你看过https://msdn.microsoft.com/en-us/library/ms189799.aspx吗?

EDITED EDITED

This for your edited question.For getting the IPAddress you have to enable the cmdshell. 这是针对您编辑的问题。要获取IPAddress,您必须启用cmdshell。 However, Enabling xp_cmdshell has security drawbacks and I won't advise you on doing so. 但是,启用xp_cmdshell具有安全性缺陷,我不会建议您这样做。 If you can use servername instead of server IP then try this, 如果您可以使用servername而不是服务器IP,那么试试这个,

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

or this, 或这个,

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM