2009-12-01 250 views

回答

9

您無法在PHP中啓用這些選項,您需要自己編譯SQLite以啓用這些選項。重要的是,您需要下載完整版本,而不是從SQLite download page合併源版本。

如果您使用的是Unix,請獲取sqlite-3.6.20.tar.gz tarball並下載它。然後:

tar xzf sqlite-3.6.20.tar.gz 
cd sqlite-3.6.20 
export CFLAGS='-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1' 
./configure 
make 

然後你就會有sqlite3命令行實用程序,並在.libs子目錄中的庫文件。

+0

我知道你沒有這樣做,但爲什麼我的問題被鎖定? – user5243421 2009-12-06 11:30:18

+0

我發現它沒有工作,我使用的版本是3.7.6.2。 有沒有其他想法? – 2011-05-24 07:39:02

2

here,似乎你必須編譯使用

#define SQLITE_ENABLE_UPDATE_DELETE_LIMIT 

SQLite的源代碼,以啓用它。

+0

哎呦,我應該指出的是,我在使用PHP這樣做。 – user5243421 2009-12-01 07:30:17

16

您可以使用限制與選擇,你可以組合選擇並刪除,如:

DELETE FROM Foo 
WHERE someColumn in 
(
    SELECT someColumn FROM FOO WHERE SomeCondition LIMIT 200 
) 
+0

聰明的把戲。還有一件事:爲'someColumn'使用PK列更安全。 – guneysus 2016-07-21 09:04:13

10
DELETE FROM table WHERE rowid = (SELECT rowid FROM table WHERE condition LIMIT 1) 
+0

或者: DELETE FROM table WHERE rowid IN(SELECT rowid FROM table WHERE condition LIMIT amount_of_rows) – LionKing 2014-12-14 17:46:06

+0

爲我工作。謝謝 – IndieBoy 2015-11-15 09:00:42