2013-11-28 36 views
0

初學者到SQLite/SQL。構建一個啓用了FTS3的Android應用程序,所以我需要創建虛擬表。因爲(根據我的系統日誌),我不能用這個,虛表不使用IF NOT EXISTS語法:Android應用程序,SQLite,FTS3,創建虛擬表如果不存在

   // Create the table if it doesn't exist. 
      db.transaction(function(tx){ 
       tx.executeSql('CREATE TABLE IF NOT EXISTS User(UserId INTEGER NOT NULL PRIMARY KEY, FirstName TEXT NOT NULL, LastName TEXT NOT NULL)',[],nullHandler,errorHandler); 
      },errorHandler,successCallBack); 

爲了證實我的SQLite插件按預期工作,我一直在使用這個代替:

  // Create the table if it doesn't exist. 
      db.transaction(function(tx){ 
       tx.executeSql('DROP TABLE User',[],nullHandler,errorHandler); 
       tx.executeSql('CREATE VIRTUAL TABLE User USING fts3 (UserId INTEGER NOT NULL PRIMARY KEY, FirstName TEXT NOT NULL, LastName TEXT NOT NULL)',[],nullHandler,errorHandler); 
      },errorHandler,successCallBack); 

預期其中一期工程主要是(除了UserId INTEGER NOT NULL PRIMARY KEY不再工作,返回null每一個時間 - 建議的虛擬表友好的方式來添加一個遞增的整數也非常歡迎)。但我不想每次都丟下桌子,我想保留它。我如何檢查表格用戶的存在,並且只有在它不存在時才創建它?

回答

4

按照CREATE VIRTUAL TABLE documentation,正確的語法是:

CREATE VIRTUAL TABLE IF NOT EXISTS User USING FTS4(...) 

按照FTS documentation,你不能明確地聲明自動增量列,但每個表都有一個隱含列名爲docidrowid

+0

謝謝,該語法的作品。 – Ila

相關問題