我想在多次插入期间为每一行生成不同的uuid。
首先我创建了一个新表:
CREATE TABLE uuid_test(
`id` INTEGER INTEGER AUTO_INCREMENT PRIMARY KEY,
`col1` VARCHAR(20) DEFAULT '',
`uuid_col` VARCHAR(200) DEFAULT '',
`col2` INTEGER DEFAULT 0,
`col3` BIT(1) DEFAULT 1,
UNIQUE (`col1`, `uuid_col`, `col2`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
然后我尝试添加触发器
DELIMITER $$
CREATE TRIGGER test_trigger
BEFORE INSERT ON uuid_test
FOR EACH ROW
BEGIN
SET NEW.uuid_col := UUID() ;
END
$$
然后我尝试使用isert select
插入两列INSERT INTO kudos_voting(col1, col2) select col1, col2 from table2;
结果:
mysql> select * from uuid_test;
+----+------------+--------------------------------------+------------+-------+
| id | col1 | uuid_col | col2 | col3 |
+----+------------+--------------------------------------+------------+-------+
| 3 | gjsfgjks | 3205a742-961f-11e5-be40-086266261210 | 4 | 1 |
| 4 | gjsfgjks | 3206ccaf-961f-11e5-be40-086266261210 | 4 | 1 |
+----+------------+--------------------------------------+------------+-------+
在这里,我面临两个疑问。
col1
,uuid_col
,col2
),那么为什么它不会抛出任何错误
在插入相同的值时。答案 0 :(得分:1)
请更加小心:uuids是不同的(3205a742 vs 3206ccaf - 比较第一部分)。所以一切都像你建议的那样,不应该有任何错误。