int sqlite3_limit(sqlite3*, int id, intnewVal);
該接口允許在連接配接的過程中(by connection basis),對連接配接(on a connection)的變量結構(various constructs)進行限制。第一個參數指定了被限制的設定或者查詢的資料庫的句柄。第二個參數指定了被限制的類别(categories),該結構定義了一系列可被限制尺寸大小的結構變量(The second parameter is one of the limit categories that define aclass of constructs to be size limited)。第三個參數是對該結構的新的限制。如下是定義的限制類别:
#define SQLITE_LIMIT_LENGTH 0
#define SQLITE_LIMIT_SQL_LENGTH 1
#define SQLITE_LIMIT_COLUMN 2
#define SQLITE_LIMIT_EXPR_DEPTH 3
#define SQLITE_LIMIT_COMPOUND_SELECT 4
#define SQLITE_LIMIT_VDBE_OP 5
#define SQLITE_LIMIT_FUNCTION_ARG 6
#define SQLITE_LIMIT_ATTACHED 7
#defineSQLITE_LIMIT_LIKE_PATTERN_LENGTH 8
#define SQLITE_LIMIT_VARIABLE_NUMBER 9
#define SQLITE_LIMIT_TRIGGER_DEPTH 10
#define SQLITE_LIMIT_WORKER_THREADS 11
如果一個給定的限制值是一個負值,限制不會生效。對于每一個限制的類别,在編譯的過程中,已經通過C的宏定義(變量名稱為SQLITE_MAX_NAME,當然限制名稱為SQLITE_LIMIT_NAME),指定了該值的上限(a hard upper bound).如果指定的值超出了上限,就會将該值指定為上限(truncated to the hard upper bound Categories).
不管限制值有沒有改變,sqlite3_limit的傳回值都是上一次的限制值。是以,如果我們想知道目前設 置的限制值是多少,就可以通過設定該函數的第三個參數,指定為-1,就可以查詢該結構體的限制值是 多少。
例如:
本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1950463,如需轉載請自行聯系原作者