如何在'case when'之后将值插入到不同的表中?
select case when state=1 then ('insert into table1 insert into table2') else '0' end from mytable;
答案 0 :(得分:1)
您无法在INSERT
内嵌入SELECT
。
有两种方法可以做你想做的事:
INSERT
并在应用程序代码中确定目标表。这是在C / C ++ / Java / C#/ ...代码中使用if
语句,而不是在SQL中。VIEW
。视图中的SELECT
查询是什么并不重要。它甚至可以很简单SELECT 1;
。然后为该视图创建两个TRIGGER
对象,这些对象将在插入该视图时触发。每个触发器都应该为正确的WHEN
和new.state=0
定义new.state=1
语句,因此当您在视图中执行insert时,只会触发一个触发器 - 具有匹配状态的触发器。然后在该触发器中将实际的INSERT
放入所需的目标表中。正如我所说 - 这是一个棘手的方式。我强烈建议采用第一种方法。