1

我无法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 的文档解释说它可以执行多个查询。出了什么问题?

4

1 回答 1

1

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

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

另一种选择,根据您所做的更改类型,您可能可以使用ALTER TABLE

于 2017-07-31T15:01:23.337 回答