如何插入不同的表(sqlite)?

时间:2015-05-25 13:26:44

标签: sqlite

如何在'case when'之后将值插入到不同的表中?

select case when state=1 then ('insert into table1 insert into table2') else '0' end from mytable;

1 个答案:

答案 0 :(得分:1)

您无法在INSERT内嵌入SELECT

有两种方法可以做你想做的事:

  1. 以正确的方式行事。执行INSERT并在应用程序代码中确定目标表。这是在C / C ++ / Java / C#/ ...代码中使用if语句,而不是在SQL中。
  2. 一种更棘手的方法,但如果不将其编入应用程序,则可以在数据库中创建VIEW。视图中的SELECT查询是什么并不重要。它甚至可以很简单SELECT 1;。然后为该视图创建两个TRIGGER对象,这些对象将在插入该视图时触发。每个触发器都应该为正确的WHENnew.state=0定义new.state=1语句,因此当您在视图中执行insert时,只会触发一个触发器 - 具有匹配状态的触发器。然后在该触发器中将实际的INSERT放入所需的目标表中。正如我所说 - 这是一个棘手的方式。我强烈建议采用第一种方法。