0

我有一个将数据保存到表中的应用程序,比如my_table

my_table
id | name | salary

这是一个数据输入应用程序,没有集中式数据库。所有数据输入完成后,我必须合并数据库。我的计划是从说DB2导出插入语句并将其附加到DB1。所以我写了一个程序如下:

CREATE PROCEDURE insertToTable
DECLARE max_id INT DEFAULT 1
BEGIN
    SELECT MAX(id) INTO max_id FROM my_table

    INSERT INTO table(id,name,salary) VALUES(max_id+1,'tom',1000);
    INSERT INTO table(id,name,salary) VALUES(max_id+1,'john',1500);
    ....//a lot of statements 

END

在这里,我只是将 DB2 的 id 增加 DB1 的 max(id) 以避免冲突。它工作正常。

但是有些数据库有大量的记录。我可以得到这些带有'max_id'变量的插入语句。然后我可以从那个过程中的文件中执行这些'插入'语句。或者有没有更好的解决方案。。

4

2 回答 2

1

通过添加序列使“Id”列自动递增。然后创建一个在插入时递增的触发器。

于 2013-11-11T09:35:46.943 回答
0

我想我需要这个触发器:

CREATE TRIGGER insert_test BEFORE INSERT ON table my_table
FOR EACH ROW
  BEGIN
      SET @max_id = select max(id) from my_table;
        IF NEW.id >= @max_id THEN 
            NEW.id = @max_id + 1;
        END IF;
END;

谢谢你的建议。

于 2013-11-12T05:14:25.330 回答