我使用的是SQlite,我已经 table1 :
Count | Fruit | Variety
------ |------ |--------
2 | Pear | Nashi
3 | Plum | Garnet
根据表1中的信息,我希望使用查询以最佳方式生成 table2 :
Count | Fruit | Variety
------ |------ |--------
1 | Pear | Nashi
1 | Pear | Nashi
1 | Plum | Garnet
1 | Plum | Garnet
1 | Plum | Garnet
我调查过的选项:
(2, pear, Nashi)
这样的记录插入到table2中,并使用INSTEAD OF
触发器,该触发器将根据以下内容插入适当数量的记录计数。但是,看起来我无法在桌面上使用INSTEAD OF触发器。可能是一个我不了解的更简单的解决方案。任何帮助都非常感谢。
答案 0 :(得分:1)
这可以通过递归触发器和table2
(RCount
)中的其他列来计算必须运行的剩余触发器数量:
PRAGMA recursive_triggers = ON; -- must be executed in every connection
CREATE TRIGGER tr1
AFTER INSERT ON table1
BEGIN
INSERT INTO table2(Count, Fruit, Variety, RCount)
VALUES (1, NEW.Fruit, NEW.Variety, NEW.Count);
END;
CREATE TRIGGER tt2
AFTER INSERT ON table2
WHEN NEW.RCount > 1
BEGIN
INSERT INTO table2(Count, Fruit, Variety, RCount)
VALUES (1, NEW.Fruit, NEW.Variety, NEW.RCount - 1);
END;