我用2台机器操作数据库,使用不同的帐号(root,test)登录数据库
create trigger insert_user before insert on question
for each row
set new.user = current_user();不同的帐号在插入数据时,出现的账户是同一个;第一次insert的用户是root则,使用test账户新增那个字段也是显示的root@localhost
重启服务,如果第一次insert的用户是test,使用 root新增user字段显示为test@%
为什么?怎么解决
create trigger insert_user before insert on question
for each row
set new.user = current_user();不同的帐号在插入数据时,出现的账户是同一个;第一次insert的用户是root则,使用test账户新增那个字段也是显示的root@localhost
重启服务,如果第一次insert的用户是test,使用 root新增user字段显示为test@%
为什么?怎么解决
解决方案 »
- windows下mysql如何关闭远程连接?就是关闭它自动联网的端口
- 对超大数量数据的处理
- postgresql 中文乱码
- 在一个WEB程序中,想往my sql 数据库中插入 中文 怎么办! 急!
- 怎么配制在MYSQL里的字符集?
- 我在xp上安装PHP,apache,postgresql后,连接数据库总不行,是不是postgresql没有设置啊?那又应该怎么设置啊?
- Mysql SQL语句查询,如何实现多对对的查询
- mysql新手求助,如何痛痛快快的给某一列赋值?
- 【醒目】请问command client怎么清除屏幕上的输入输出结果记录
- 游标是否继续问题
- mysql数据库导出表结构
- mysql count(*)问题
可能你2次登陆的不是同一个账号。你仔细检查下执行sql前登陆的账号。
应该不会出现你描述的情况。
其实很简单,楼主在准备insert 的时候 看看select current_user() 这个是什么用户,那个新增字段就是什么用户了;
不会是你自己的应用程序中的用户账号吧。这里current_user()是MYSQL数据库的账号,你连接数据库时用的账号。
mysql> select current_user;
+--------------+
| current_user |
+--------------+
| wangw@% |
+--------------+
1 row in setmysql> use question;
Database changed
mysql> insert into 问题(回复) values ('测试');
Query OK, 1 row affectedmysql> select * from 问题;
+------+----------+--------+----------+------+--------+----------+------+----------------+
| 序号 | 问题类型 | 提出人 | 问题描叙 | 回复 | 记录人 | 登记时间 | 图片 | user |
+------+----------+--------+----------+------+--------+----------+------+----------------+
| 9 | NULL | NULL | NULL | 测试 | NULL | NULL | NULL | root@localhost |
+------+----------+--------+----------+------+--------+----------+------+----------------+
1 row in setmysql>
DELIMITER $$DROP TRIGGER /*!50032 IF EXISTS */ `x`.`insert_user`$$CREATE
/*!50017 DEFINER = 'root'@'localhost' */
TRIGGER `insert_user` BEFORE INSERT ON `ttr`
FOR EACH ROW set new.name = current_user();
$$DELIMITER ;这个是我的用root建立的触发器,
把红色标的删除了,就OK了;
mysql> use question;
Database changed
mysql> show create trigger insert_user;
ERROR 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'trigger insert_user' at line 1
Database changed
mysql> show triggers;
+-------------+--------+-------+-------------------------------+--------+---------+----------+----------------+
| Trigger | Event | Table | Statement | Timing | Created | sql_mode | Definer |
+-------------+--------+-------+-------------------------------+--------+---------+----------+----------------+
| insert_user | INSERT | 问题 | set new.user = current_user() | BEFORE | NULL | | root@localhost |
+-------------+--------+-------+-------------------------------+--------+---------+----------+----------------+
1 row in setmysql>
for each row
set new.user = user();