代码之家  ›  专栏  ›  技术社区  ›  Suresh Prajapati

@AdHoc过程不执行多个语句

  •  1
  • Suresh Prajapati  · 技术社区  · 8 年前

    SQL 单个事务中的查询。我的问题是:

    DROP TABLE DevicePing IF EXISTS;
    
    CREATE TABLE DevicePing (DeviceId INTEGER ,RideId BIGINT ,Latitude FLOAT ,Longitude FLOAT ,Speed FLOAT ,Bearing FLOAT ,Angle FLOAT ,HorizontalError FLOAT ,VerticalError FLOAT ,Temprature FLOAT ,Ignition TINYINT ,Motion TINYINT ,RelayState TINYINT ,TIMESTAMP BIGINT);
    

    @AdHoc 解释它可以执行多个查询。 出了什么问题?

    1 回复  |  直到 8 年前
        1
  •  1
  •   BenjaminBallard    8 年前

    VoltDB不允许在同一事务或批处理中删除和创建对象(如果使用批处理DDL语句)。如果您担心此更改可能会干扰其他事务,则应在进行此更改之前暂停数据库,然后恢复数据库。

    如果您有任何使用此表的存储过程,则需要先删除它们,然后才能删除该表。然后,可以在再次创建表后重新创建它们。如果多个过程或视图依赖于此表,并且您试图最小化批数,您可能会发现可以使用一个批删除所有内容(从过程、视图开始,然后是表),然后使用另一个批再次创建所有内容(从表、索引、视图开始,然后是过程)。如果您想要幂等DDL脚本,可以遵循这种模式。如果您经常更改模式并且不需要保留任何数据,则可以在开发过程中节省时间。

    另一种选择是,根据您正在进行的更改类型,您可能可以使用 ALTER TABLE

    推荐文章