使用插入触发器引用属性

时间:2013-09-19 13:30:01

标签: sql database sqlite triggers

我与Highschooler合作有两种关系(ID,姓名,等级)和喜欢(ID1,ID2)

我想制作一个插入触发器,将记录插入到喜欢的关系中。

当我在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;

但是,使用insert触发器时,Old引用无效!那么如何引用旧属性呢?

@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语句存在一些问题。

1 个答案:

答案 0 :(得分:1)

插入触发器上没有“Old”这样的东西,因为旧行不存在。您只是插入一个新行。

我认为你想要的是

for each row

insert into Likes (FirstID,SecondID)
select hs.id, new.id
from HighShooler hs
where hs.grade = new.grade
and hs.id != new.id