【发布时间】:2013-09-19 13:30:00
【问题描述】:
我与高中生有两个关系(ID、姓名、年级)和喜欢(ID1、ID2)
我想制作一个插入触发器,将记录插入到 likes 关系中。
当我在 Highschooler 关系中插入一个新的 Highschooler 时,我希望我的插入触发器将记录插入到喜欢中,并且基本上新的 highschooler 喜欢同一年级的每个人。
我想要的是如下所示:
create trigger R1
after insert on Highschooler
for each row
when (Old.grade = New.grade)
begin
insert into Likes values(New.ID, Old.ID));
end;
但是,对于插入触发器,旧引用无效!那么如何引用旧属性呢?
@Bill Gregg:感谢您的提示和解释。这就是你的建议吗?
create trigger R1
after insert on Highschooler
for each row
begin
insert into Likes values(hs.ID, old.ID));
select(hs.ID, old.ID from Highschooler hs, Highschooler old
where hs.grade = old.grade and hs.ID <> old.ID
end;
我在我的 DBMS 上运行它,但它没有执行。我怀疑在插入后使用 select 语句存在一些问题。
【问题讨论】:
-
顺便说一下我用的是sqlite。
-
您不能混合插入方法。您不能“插入值”和“插入选择”。我认为我的代码将按照编写的方式工作(假设您将其放入“for each row”操作中,这实际上是有效的 SqlLite 语法。
标签: sql database sqlite triggers