0
CD20160914 Lv8 专家互助 发布于2024-10-21 10:54
你在数据库里面操作吧,写一个触发器,当有数据更新的时候,数据库会按你设置的先备份到另一个表,再把当前表的数据对应更新过的数据删除掉,然后你的新插入数据不会影响也不会重复
具体使用触发器,你可以自己百度找教程,很多的。
一假设已有表结构和测试数据
假设有一个表名为OriginalTable,包含字段id(主键)、column1、column2等。先插入一些测试数据:
INSERT INTO OriginalTable (id, column1, column2) VALUES
(1, 'value1', 'value2'),
(2, 'value3', 'value4'),
(3, 'value5', 'value6'),
(4, 'value7', 'value8'),
(5, 'value9', 'value10'),
(15, 'value11', 'value12'),
(28, 'value13', 'value14'),
(30, 'value15', 'value16');
二创建备份表
创建一个名为BackupTable的表,结构与OriginalTable相同
SELECT TOP 0 * INTO BackupTable FROM OriginalTable;
三创建触发器
创建一个AFTER UPDATE触发器,当满足条件的数据被更新时,将这些数据备份到BackupTable,然后从OriginalTable中删除,并重新插入新数据
CREATE TRIGGER trg_BackupAndDeleteOnCondition
ON OriginalTable
AFTER UPDATE
AS
BEGIN
-- 将满足条件的数据插入到备份表
INSERT INTO BackupTable SELECT * FROM deleted WHERE id IN (5, 15, 28);
-- 从原表中删除满足条件的数据
DELETE FROM OriginalTable WHERE id IN (5, 15, 28);
END;
帆软用户AUrhSUV0k1(提问者)
- 刚才问了,目前这个触发器已经有作用了,似乎是无法再新增新的,我有想了另一个办法,但好像也无法使用
// 假设已经从Excel导入数据,取得所有行数据
var rows = widget.getAllRowData();
for (var i = 0; i 0) {
// 若存在,执行备份操作
var backupSql = "INSERT INTO SSSGCN (SSSGCN01,SSSGCN02,SSSGCN03,SSSGCN04,SSSGCN05,SSSGCN06,SSSGCN07,SSSGCN08,SSSGCN09,SSSGCN10,SSSGCN11,SSSGCN12,SSSGCN13,SSSGCN14,SSSGCN15,SSSGCN16,SSSGCN17,SSSGCN18,SSSGCN19,SSSGCN20,SSSGCN21,SSSGCN22,SSSGCN23,SSSGCN24,SSSGCN25,SSSGCN26,SSSGCN27,SSSGCN28,SSSGCN29,SSSGCN30,SSSGCN31,SSSGCN32,SSSGCN33,SSSGCN34,SSSGCN35,SSSGCN36,SSSGCN37,SSSGCN38,SSSGCN39,SSSGCN40,SSSGCN41,SSSGCN42,SSSGCN43,SSSGCN44,SSSGCN45,SSSGCN46,SSSGCN47) " +
"SELECT SSSGCN01,SSSGCN02,SSSGCN03,SSSGCN04,SSSGCN05,SSSGCN06,SSSGCN07,SSSGCN08,SSSGCN09,SSSGCN10,SSSGCN11,SSSGCN12,SSSGCN13,SSSGCN14,SSSGCN15,SSSGCN16,SSSGCN17,SSSGCN18,SSSGCN19,SSSGCN20,SSSGCN21,SSSGCN22,SSSGCN23,SSSGCN24,SSSGCN25,SSSGCN26,SSSGCN27,SSSGCN28,SSSGCN29,SSSGCN30,SSSGCN31,SSSGCN32,SSSGCN33,SSSGCN34,SSSGCN35,SSSGCN36,SSSGCN37,SSSGCN38,SSSGCN39,SSSGCN40,SSSGCN41,SSSGCN42,SSSGCN43,SSSGCN44,SSSGCN45,SSSGCN46,SSSGCN47 FROM SSSGCM " +
"WHERE SSSGCM01 = '" + primaryKey + "'";
executeSQL(backupSql);
}
}
FR里好像没有var rows = widget.getAllRowData()和executeSQL(backupSql)的用法
CD20160914 回复 帆软用户AUrhSUV0k1(提问者)
- 这个一二句说不清楚。得找一个懂这方面的,在你电脑上面调试,我只是提供这个方法
取消
评论