我有一个将数据保存到表格中的应用程序,例如 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
这里我只是通过DB1的max(id)增加DB2的id以避免冲突。它工作正常。
但是有些数据库有大量的记录。我可以使用'max_id'变量获取这些插入语句。然后我可以从该过程中的文件执行这些'insert'语句。或者有更好的解决方案..
答案 0 :(得分:1)
通过添加序列使“Id”列自动增量。 然后创建一个在插入时递增的触发器。
答案 1 :(得分: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;
感谢您的建议。