2014-07-16 43 views
2

什麼是SQLite中的create table語句意味着返回?SQLite - 創建表(如果不存在)

我觀察到create table if not exists返回01當表確實存在。返回值是表格是否存在的可靠指示?如果該表已存在,我希望該語句返回0,如果不存在則返回1,類似於insert語句。

+0

所以你用這種方法來確定表是否存在? – amphetamachine

+0

在此庫(https://github.com/praeclarum/sqlite-net)中,如果它嘗試遷移表(如果不存在,則使用create table)但是,檢查0有時會失敗,因爲它會返回1 - 即使該表在執行語句之前已經存在:/ – Jamie

回答

1

if not exists語法使命令成功,即使表已經存在。它只是沒有做任何事情。

我不確定你指的是「返回1」,除非你在談論命令行客戶端。在這種情況下,如果您只從create語句中刪除if not exists,那麼如果該表存在,該命令將返回1(表示失敗)。

+0

使用SQLite-NET庫,該命令使用ExecuteNonQuery執行,因此它使用SQLite3.Changes(connectionHandle)查詢sqlite中的更改。 – Jamie

2

Changes返回受影響的行數。 對於CREATE TABLE語句,此值無意義。

有沒有簡單的方法來確定CREATE TABLE IF NOT EXISTS語句是否創建或不。 你應該事先檢查PRAGMA table_info