思路是这样的,表的一列 psw 根据 name 这列,假如有数据的话, 就用函数更新本人的数值,
不知道 触发器是不是可以用来做这个事情? 求一个触发器的写法
另一种思路就是,假如从eee表 得到name,下边这两句要是合成一句应该 怎么样写这个sql?
insert into crc_test(name) select ename from eee;
update crc_test set psw=crc32(crc_test.name);
—
mysql> insert into crc_test(name) values(rand_string(5));
Query OK, 1 row affected (0.00 sec)
mysql> update crc_test set psw=crc32(crc_test.name);
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from crc_test;
+–+–+
| name | psw |
+–+–+
| hghrf | 915227050 |
+–+–+
1 row in set (0.00 sec)
mysql> desc crc_test;
+–+–+–+–+–+–+
| Field | Type | Null | Key | Default | Extra |
+–+–+–+–+–+–+
| name | char(10) | YES | | NULL | |
| psw | int(16) | YES | | NULL | |
+–+–+–+–+–+–+
2 rows in set (0.01 sec)
不知道 触发器是不是可以用来做这个事情? 求一个触发器的写法
另一种思路就是,假如从eee表 得到name,下边这两句要是合成一句应该 怎么样写这个sql?
insert into crc_test(name) select ename from eee;
update crc_test set psw=crc32(crc_test.name);
—
mysql> insert into crc_test(name) values(rand_string(5));
Query OK, 1 row affected (0.00 sec)
mysql> update crc_test set psw=crc32(crc_test.name);
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from crc_test;
+–+–+
| name | psw |
+–+–+
| hghrf | 915227050 |
+–+–+
1 row in set (0.00 sec)
mysql> desc crc_test;
+–+–+–+–+–+–+
| Field | Type | Null | Key | Default | Extra |
+–+–+–+–+–+–+
| name | char(10) | YES | | NULL | |
| psw | int(16) | YES | | NULL | |
+–+–+–+–+–+–+
2 rows in set (0.01 sec)
解决方案
5
可以用触发器实现。
set new.colName = newValue
具体可以参考一下MYSQL官方免费手册中的说明。
set new.colName = newValue
具体可以参考一下MYSQL官方免费手册中的说明。
15
after insert要改成before insert
update t1 set new.c2=new.c1+10; 这句也有问题,去掉update t1
update t1 set new.c2=new.c1+10; 这句也有问题,去掉update t1