天天看點

SQLite 運作時限制(Run-time Limits)

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,如需轉載請自行聯系原作者