mysql手冊的說明:
??? 如果分配給
CHAR或
VARCHAR列的值超過列的最大長度,則對值進行裁剪以使其適合。如果被裁掉的字符不是空格,則會產生一條警告。如果裁剪非空格字符,則會造成錯誤
(而不是警告
)并通過使用嚴格
SQL模式禁用值的插入。
MySQL服務器模式說明:
MySQL服務器可以以不同的SQL模式來操作,并且可以為不同客戶端應用不同模式。這樣每個應用程序可以根據自己的需求來定制服務器的操作模式。
模式定義MySQL應支持哪些SQL語法,以及應執行哪種數據驗證檢查。這樣可以更容易地在不同的環境中使用MySQL,并結合其它數據庫服務器使用MySQL。
你可以用--sql-mode="modes"選項啟動mysqld來設置默認SQL模式。如果你想要重設,該值還可以為空(--sql-mode
="")。
你還可以在啟動后用SET [SESSION|GLOBAL]
sql_mode='modes'語句設置sql_mode變量來更改SQL模式。設置
GLOBAL變量時需要擁有SUPER權限,并且會影響從那時起連接的所有客戶端的操作。設置SESSION變量只影響當前的客戶端。任何客戶端可以隨時更改自己的會話
sql_mode值。
Modesis是用逗號(‘,’)間隔開的一系列不同的模式。你可以用SELECT
@@sql_mode語句查詢當前的模式。默認值是空(沒有設置任何模式)。
主要重要sql_mode值為:
·????????
ANSI
更改語法和行為,使其更符合標準SQL。
·????????
STRICT_TRANS_TABLES
如果不能將給定的值插入到事務表中,則放棄該語句。對于非事務表,如果值出現在單行語句或多行語句的第1行,則放棄該語句。本節后面給出了更詳細的描述。
·????????
TRADITIONAL
Make MySQL的行為象“傳統”SQL數據庫系統。該模式的簡單描述是當在列中插入不正確的值時“給出錯誤而不是警告”。注釋:一旦發現錯誤立即放棄INSERT/UPDATE。如果你使用非事務存儲引擎,這種方式不是你想要的,因為出現錯誤前進行的數據更改不會“滾動”,結果是更新“只進行了一部分”。
本手冊指“嚴格模式”,表示至少STRICT
_TRANS_TABLES或STRICT
_ALL_TABLES被啟用的模式。
posted on 2007-08-29 18:30
想飛的魚 閱讀(9303)
評論(0) 編輯 收藏 所屬分類:
database