2013-07-03 193 views
1

我创建了我希望中插入类似的数据两个表。插入新的随机UUID()在运行插入,每次插入

CREATE TABLE one(
    one_id INT NOT NULL AUTO_INCREMENT, 
    name VARCHAR(50) NOT NULL, 
    PRIMARY KEY (one_id) 
)ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE two(
    two_id INT NOT NULL AUTO_INCREMENT, 
    name VARCHAR(50) NOT NULL, 
    PRIMARY KEY (two_id) 
)ENGINE=InnoDB DEFAULT CHARSET=utf8; 

要做到这一点,我使用的交易

START TRANSACTION; 

SET @name = uuid(); 

INSERT INTO one(one_id,name) VALUES (Null,@name); 

INSERT INTO two(two_id, name) VALUES (Null, @name); 

COMMIT; 

这不会产生新的inserts.It但是插入相同的数据字段名,因为我想新的价值。

我该如何做这项工作?

+0

“名”必须为每一个表或不同的同? –

回答

1

我没有看到需要移动到事务才能做到这一点,只需在表中插入一个插入触发器。

喜欢的东西:

CREATE TRIGGER `ONE_TABLE_TRIGG` BEFORE INSERT ON `one` 
FOR EACH 
ROW BEGIN 
SET NEW.name= UUID(); 
END ; 

您可以检查它是否在这之前空。在两个表上做这个,你很好,或者在1个触发器上向另一个表添加插入。

0

我解决它没有太多的复杂性通过具有在同一个文件的几个交易报表数

START TRANSACTION; 

SET @name = uuid(); 

INSERT INTO one(one_id,name) VALUES (Null,@name); 

INSERT INTO two(two_id, name) VALUES (Null, @name); 

COMMIT; 

START TRANSACTION; 

SET @name = uuid(); 

INSERT INTO one(one_id,name) VALUES (Null,@name); 

INSERT INTO two(two_id, name) VALUES (Null, @name); 

COMMIT; 

/* 等 */

+1

恩,大声笑。任何方式都是好方法。 ;) –