SQLite:条件DDL语句

时间:2011-11-16 15:34:11

标签: sqlite ddl

我希望在sqlite3中执行以下类型的代码:

drop table x if (select y from z where col1 = "a");

基本上执行DDL命令如果某些值当前存在于同一数据库中。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

sqlite shell脚本:

.bail ON
SELECT CASE COUNT(*)
       WHEN 0       THEN 1/0  -- will throw
       ELSE 1
       END
  FROM z
 WHERE col1 = 'a';
DROP TABLE x;

使用sqlite the_database < the_script

运行它

答案 1 :(得分:0)

答案 2 :(得分:0)

正如其他人所指出的,如果不使用外部工具,这是不可能的。

我现在的解决方案是:

PSEUDOCODE:
// create temp table;
// insert conditional DDL statement(s) into temp table along with an execute column
// run condition, and if valid, set temptable's corresponding row to execute 1;
// after condition is over, run all true statements in temp table

答案 3 :(得分:0)

SQL没有为您提供将此功能作为单行执行的方法。 您在单个命令中最接近这样做的目的是:

  1. 问题:BEGIN TRANSACTION
  2. 执行查询:SELECT y FROM z WHERE col1 =“a”
  3. DROP TABLE x
  4. if(步骤2的结果有> 0行)     问题:COMMIT 其他     问题:ROLLBACK