2014-01-09 9 views
0

我試圖執行DDL命令影響表的行數的場景,但執行alter命令總是返回0行數。可以執行DDL命令,例如alter query會影響表的行嗎?

a)表a有3列b,c,d,插入3條記錄。

B)ALTER TABLE a DROP COLUMN b

刪除B列不應該在表已經影響到行。

+1

DDL不會影響特定的行(插入/更新/刪除的方式) - 它影響表格對象。 – haki

+0

Create是一個DDL命令並創建表爲(select * from some_table)返回受影響的行。 – user2822707

+0

這是返回結果的'select'語句。 DDL操作在對象\段上執行 - 意義 - 結構,而不是數據行。 – haki

回答

1

要深入淺出的講,除了TRUNCATEDROP TABLE沒有其他DDL會影響數據(行)表所擁有的..

從技術上說,一個DDL應該觸摸模式對象,而不是數據。 TRUNCATE將重置High WaterMark (HWM)。並標記爲塊沒有數據。 DROP TABLE將完全刪除元數據及其相關數據。

CREATE作爲SELECT東西預言從標準SQL,其中DDLCREATE)首先使用所述結果集元數據(FROM SELECT)執行給專門開並且然後數據被加載太!如果loadimg因任何原因失敗,則該進程將被暫停並且不會創建對象!

+0

因此得出結論:沒有DDL命令會返回實際上Oracle的CREATE以外的其他語言行。 – user2822707

+0

是的,同樣'CREATE'作爲'SELECT'只用於創建一個新對象,而現有的你不能。 –

+0

'create table ... as select ...'不是特定於Oracle的。它是SQL標準的一部分 –

相關問題