2013-03-26 63 views
1

这是一个非常具体的问题。我一直在努力弄清楚所需的步骤,但我无法想出任何可行的方法。Android SQlite触发器

无论何时将'任务'表中的新任务插入到数据库中,我都需要一个触发器将新记录插入名为记录的表中。我需要在'项目'表格中为每个打开的项目插入一条记录,以匹配任务中的条件。我的伪代码/尝试在声明如下。

CREATE TRIGGER update_item_records ON INSERT INTO tasks 
BEGIN 
    SELECT item in ITEMS WHERE item.type=new.type AND item.program=new.program 
    ....now insert into records - this is where I'm confused 
    INSERT INTO records record.item = item.id, record.program = new.program, 
    record.task=new.id 
END 

回答

2

触发内SELECT语句的结果将被忽略。 然而,INSERT命令accepts a SELECT query as source

INSERT INTO records(item, program, task) 
SELECT id, new.program, new.id 
FROM items 
WHERE type = new.type 
    AND program = new.program; 
+0

谢谢。那很棒。如何将新行的引用与列引用混合在一起很酷。我已经写了代码来做到这一点,而不使用sqlite,但这是约。缩短50行! – ndw 2013-03-26 22:03:13

0

CODE and CONCEPT HERE

触发器是执行一些procedural code当某些事件发生在我们的database

考虑为trigger这个简单的演示这在 大学新生插入后会自动添加食堂 和图书馆领域。

CREATE TRIGGER if not exists add_student 
    AFTER INSERT 
ON[student] 
    for each row 
    BEGIN 
     insert into library values (2 , new.sid); 
     insert into canteen values (3 , new.sid); 
    END;