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

创建一个触发器,用于将客户端ip地址放入MySQL中的列中,mysql,sql,codeigniter,toad,Mysql,Sql,Codeigniter,Toad,我想为这个表项目的三列创建触发器。我想为prj_crtd_dt列创建触发器,插入创建日期,prj_updt_dt插入更新日期,prj_last_ip必须更新创建系统的ip地址 我已经为日期列创建了触发器,我想知道如何为ip地址创建触发器 在插入客户之前创建客户的触发器创建客户日期 每行 设置NEW.cus_crtd_dt=NOW(); NEW.cus_updt_dt=NOW()您的问题没有说明。然而,据我所知,以下内容将对您有所帮助。你看到了吗 已编辑 这是您编辑的问题的答案。要获取IPAdd

我想为这个表项目的三列创建触发器。我想为
prj_crtd_dt
列创建触发器,插入创建日期,
prj_updt_dt
插入更新日期,
prj_last_ip
必须更新创建系统的ip地址

我已经为日期列创建了触发器,我想知道如何为ip地址创建触发器


在插入客户之前创建客户的触发器创建客户日期 每行 设置NEW.cus_crtd_dt=NOW();
NEW.cus_updt_dt=NOW()

您的问题没有说明。然而,据我所知,以下内容将对您有所帮助。你看到了吗

已编辑

这是您编辑的问题的答案。要获取IPAddress,您必须启用cmdshell。但是,启用xp_cmdshell有安全缺陷,我不会建议您这样做。如果可以使用servername而不是服务器IP,请尝试以下操作:

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;
或者这个,

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

你的问题没有说明。然而,据我所知,以下内容将对您有所帮助。你看到了吗

已编辑

这是您编辑的问题的答案。要获取IPAddress,您必须启用cmdshell。但是,启用xp_cmdshell有安全缺陷,我不会建议您这样做。如果可以使用servername而不是服务器IP,请尝试以下操作:

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;
或者这个,

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

您可以在评论中提及这一点,而不是在回答中提及;)创建触发器在为每行设置新的人员插入之前创建客户的日期。peo_crtd_dt=NOW();NEW.peo_updt_by=NOW();NEW.peo_last_ip=SERVERPROPERTY('MachineName');静态分析1分析期间发现错误。无法识别的语句类型。SQL查询:NEW.peo_updt_by=NOW()MySQL说:Documentation#1064-您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,以了解在第1行的“NEW.peo_updt_by=NOW()”附近使用的正确语法。您可以在注释中而不是在回答中提到这一点吗创建触发器在为每行设置新的人员插入之前创建客户的日期。peo_crtd_dt=NOW();NEW.peo_updt_by=NOW();NEW.peo_last_ip=SERVERPROPERTY('MachineName');静态分析1分析期间发现错误。无法识别的语句类型。SQL查询:NEW.peo_updt_by=NOW()MySQL说:Documentation#1064-您的SQL语法有错误;查看与您的MariaDB服务器版本相对应的手册,以了解在第1行的“NEW.peo_updt_by=NOW()”附近使用的正确语法。您可以帮助@suraz更具可读性。更具可读性。