2017-07-31 52 views
1

我無法在單個事務中運行SQL個查詢。這裏是我的查詢:@AdHoc程序不執行多個語句

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

VoltDB不允許一個目的是在同一事務或批次內被丟棄和創建(如果使用分批DDL語句)。如果您擔心此更改可能會對其他事務造成干擾,則應在進行此更改之前暫停數據庫,然後恢復數據庫。

如果您有使用此表的任何存儲過程,他們需要首先被丟棄,然後才能刪除該表。然後可以在您再次創建表格後重新創建它們。如果多個過程或視圖依賴於此表,並且您嘗試最大限度地減少批次數量,則可能會發現可以使用一個批次來刪除所有內容(從過程,視圖和表格開始)和另一批次以再次創建所有內容(啓動與表,索引,視圖,然後程序)。如果您需要一個冪等DDL腳本,您可以遵循這種模式,如果您經常進行模式更改並且不需要保留任何數據,則可以節省開發時間。

另一種選擇,這取決於你正在什麼類型的變化,你可能能夠使用ALTER TABLE