2013-07-03 162 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

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