2011-05-12 82 views
7

我在数据库中两个表:如何使用引发的Android SQLite的

  • 表一个有名字和房间号列
  • 表中的两个有房间号和时间列。

现在,当第一列的房间号被删除或添加时,我的第二张桌子也应该更新。我认为这可能与TRIGGER命令,但我不确定如何使用它。

通常我创建数据库语句是这样的:

private static final String DATABASE_CREATE_PATIENT_ID_TABLE = 
    "create table " + DATABASE_PATIENT_TABLE + 
    " (_id integer primary key autoincrement," 
    + "patient_number text not null, room_numbertext not null, " + 
      "patient_initial text not null);"; 

现在房间都删除或第一个表我的第二个表应该被更新时加入。

private static final String DATABASE_CREATE_NOTES_ID_TABLE = 
    "create table " + DATABASE_NOTES_TABLE + 
    " (_id integer primary key autoincrement," + 
    " room_number text not null, time_hour text not null, " + 
      "notes_hour text not null, today_date text not null);"; 

最初我在做的是比较两个表的内容。但是当数据增加时,这肯定会导致性能问题。所以我偶然发现了TRIGGER的事情。我认为这可以解决我的问题,但我不知道应该如何使用它。

我从Using SQLite Database with Android来了解它。

我已经解释了这个问题与我的另一个问题的屏幕截图。请看看它,如果请您指导我 new question

+0

为什么人们提出有关数据库问题的问题是不愿意在问题中列出他们的表格?这不仅仅针对你,Shaista(尽管你在这个问题上“有罪”);关于SO的数据库相关问题是一个普遍的观察。 – 2011-05-12 19:16:06

+1

但我已经将它命名为您可以在代码本身中看到。它直接来自我的代码,只有当我解释它时,它才简短地指出直接的问题。我的意图很明显可能会被误解。 – 2011-05-12 19:21:11

+1

@Jonathan - 工作中存在不同的问题,除非完全完成,否则没有人愿意向普通公众展示他们的工作代码。只是我的观点。 – yogsma 2011-05-12 19:22:36

回答

6

简单为您启动

create trigger simple_trigger1 after insert on database_patient_table begin update database_notes_table; end 
create trigger simple_trigger2 after delete on database_patient_table begin update database_notes_table; end 

使用此文档http://www.sqlite.org/lang_createtrigger.html

+1

感谢您的回答。但一些快速的问题我的患者数据库插入函数具有名称insertInPatientDb所以我应该写的确切名称fr插入函数或只是插入,因为你说的是​​足够的?我没有修改任何更新功能,所以我应该更改更新功能吗? – 2011-05-12 19:26:04

+0

是的,你需要使用数据库表名。以更新应该在第二个表中发生的方式更改更新功能。我刚刚举了一个例子,阅读该文档,非常有帮助。 – yogsma 2011-05-12 19:31:43

+0

我很抱歉,但我想回到广场。 – 2011-05-12 19:38:02

0

Demo for Sqlite Trigger in Android HERE

触发某些事件之后执行一些程序代码发生在我们的数据库。

我写了一个示例触发器示例。

示例:考虑任何大学的数据库。因此,如果在学生表中添加了任何学生记录,则会在库部分或食堂部分自动添加新行(元组)。

因此,通过编写一个简单的触发器,我们可以在其他部分自动插入新记录, 。

架构

CREATE TABLE student (sid INTEGER PRIMARY KEY, sname TEXT) 
CREATE TABLE canteen (cid , sid) 
CREATE TABLE library (lid INTEGER PRIMARY KEY, sid TEXT) 

触发在图书馆和食堂表自动添加记录:

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; 

说明:这里的概念是建立一个触发器,它插入基于在食堂和图书馆的价值在新的学生身份证上。

相关问题