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