不能只是简单的insert吧。我认为需要判断下。 是不是需要先delete from aa 然后在insert 试试
CREATE OR REPLACE TRIGGER ddd AFTER INSERT OR UPDATE or delete ON AA BEGIN MERGE INTO BB p USING (SELECT 日期,性别,COUNT(*) 人数 FROM AA GROUP BY 日期,性别) np ON (p.日期 = np.日期 and p.性别=np.性别) WHEN MATCHED THEN UPDATE SET p.人数 = np.人数 WHEN NOT MATCHED THEN INSERT VALUES (np.日期, np.性别, np.人数 ) END;试试。好像是这个思路
sql语句的问题,你的分组条件太多了
你这个没插入aa表一条都触发bb表统计插入啊,所以才这样
CREATE OR REPLACE TRIGGER ddd AFTER INSERT OR UPDATE or delete ON AA FOR EACH ROW BEGIN INSERT INTO BB(日期,性别,人数) SELECT NEW.日期,NEW.性别,(select COUNT(*) FROM AA where AA.日期 = NEW.日期) FROM DUAL; END; 看看这样行不
from aa
group by 日期,性别;
是不是需要先delete from aa
然后在insert 试试
CREATE OR REPLACE TRIGGER ddd
AFTER INSERT OR UPDATE or delete ON AA
BEGIN MERGE INTO BB p
USING (SELECT 日期,性别,COUNT(*) 人数 FROM AA GROUP BY 日期,性别) np
ON (p.日期 = np.日期 and p.性别=np.性别)
WHEN MATCHED THEN
UPDATE
SET p.人数 = np.人数
WHEN NOT MATCHED THEN
INSERT
VALUES (np.日期, np.性别, np.人数 )
END;试试。好像是这个思路
AFTER INSERT OR UPDATE or delete ON AA FOR EACH ROW
BEGIN
INSERT INTO BB(日期,性别,人数)
SELECT NEW.日期,NEW.性别,(select COUNT(*) FROM AA where AA.日期 = NEW.日期) FROM DUAL;
END;
看看这样行不
应该进行更行插入数据操作,用merge,当有重复数据记录的时候进行更新操作,没有记录的时候进行
插入操作。