1

我创建了两个表,我想在其中插入类似的数据。

 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;

这不会在新插入时产生新值。但是它会在字段名称中插入我想要的相同数据。

我怎样才能使这项工作?

4

2 回答 2

1

我认为不需要转移到事务来执行此操作,只需向 table 添加一个 before insert 触发器。

就像是 :

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

您可以在执行此操作之前检查它是否为空。在两个表上都这样做,你很好,或者在 1 个触发器上将插入添加到另一个表。

于 2013-07-03T13:25:38.900 回答
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;

/* ETC */

于 2013-07-03T13:25:51.540 回答