top
Loading...
1.8.6.MySQL處理約束的方式
1.8.6. MySQL處理約束的方式
1.8.6.1. PRIMARY KEY和UNIQUE索引約束
1.8.6.2. 對無效數據的約束
1.8.6.3. ENUM和SET約束

使用MySQL,你可以使用允許回滾的事務表,以及不允許回滾的非事務表。因此,在MySQL中的約束處理功能與其他DBMS中的略有不同。在非事務性表中插入或更新大量行時,當出現錯誤以至于不能回滾所作的變更時,必須處理該情況。

其基本原理在于,在解析將要執行的語句的同時,MySQL服務器會盡量為檢測到的問題生成錯誤信息,并會在執行語句的同時盡量恢復出現的錯誤。在大多數情況下我們均是這樣作的,但不包括所有情況。

出現錯誤時,MySQL可選擇中途中止語句,或盡可能恢復并繼續執行語句。默認情況下,服務器將采取后一種路線。這意味著,服務器可能會強制將非法值變為最接近的合法值(例如)。

從MySQL 5.0.2開始,提供了數種SQL模式,使用它們,能夠對如何接受可能為不良數據值的方式進行更好的控制,也能在出現錯誤時,對是否繼續執行語句或放棄語句進行控制。使用這些選項,能夠將MySQL服務器配置為更為傳統的風格,類似于拒絕不恰當輸入的其他DBMS。可以在運行時設置SQL模式,這樣,各客戶端就能選擇與其需求最為貼切的行為。請參見5.3.2節,“SQL服務器模式”。

在以下部分,介紹了使用不同約束類型的情況。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/introduction.html
北斗有巢氏 有巢氏北斗