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

标签 mysql sql codeigniter toad

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/

相关文章:

php - 将表单中的数据存储到数据库中

mysql - 比较同一个 SQL 表中的 2 列

php - Codeigniter 和 jquery Ajax

MySQL 排序依据列 = x,列 asc?

php - MySql 查询连接同一列的 2 行

php - 为什么这不包括所有文件?

php - 多条件php/mysql

PHP Codeigniter 高级搜索过滤器

php - 我怎样才能获得购物车内下拉菜单的值(value)?总是归零

java - 同步这个惰性初始化