@AdHoc 程序不执行多条语句
@AdHoc procedure not executing multiple statements
我无法在单个事务中运行拖曳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 的文档解释说它可以执行多个查询。
出了什么问题?
VoltDB 不允许在同一事务或批处理中删除和创建对象(如果使用批处理 DDL 语句)。如果您担心此更改可能会干扰其他事务,您应该在进行此更改之前暂停数据库,然后恢复数据库。
如果您有任何使用此 table 的存储过程,则需要先删除它们,然后才能删除 table。然后可以在您再次创建 table 后重新创建它们。如果多个过程或视图依赖于此 table 并且您正在尝试最小化批次的数量,您可能会发现可以使用一个批次来删除所有内容(从过程、视图开始,然后是 tables)和另一批重新创建所有内容(从 table 开始,索引,视图,然后是过程)。如果您想要一个幂等的 DDL 脚本,您可以遵循这种模式,如果您经常更改架构并且不需要保留任何数据,这可以在开发过程中节省时间。
另一种选择,取决于您进行的更改类型,您可以使用 ALTER TABLE。
我无法在单个事务中运行拖曳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 的文档解释说它可以执行多个查询。 出了什么问题?
VoltDB 不允许在同一事务或批处理中删除和创建对象(如果使用批处理 DDL 语句)。如果您担心此更改可能会干扰其他事务,您应该在进行此更改之前暂停数据库,然后恢复数据库。
如果您有任何使用此 table 的存储过程,则需要先删除它们,然后才能删除 table。然后可以在您再次创建 table 后重新创建它们。如果多个过程或视图依赖于此 table 并且您正在尝试最小化批次的数量,您可能会发现可以使用一个批次来删除所有内容(从过程、视图开始,然后是 tables)和另一批重新创建所有内容(从 table 开始,索引,视图,然后是过程)。如果您想要一个幂等的 DDL 脚本,您可以遵循这种模式,如果您经常更改架构并且不需要保留任何数据,这可以在开发过程中节省时间。
另一种选择,取决于您进行的更改类型,您可以使用 ALTER TABLE。