1. 程式人生 > >MySQL中no action和restrict的區別

MySQL中no action和restrict的區別

    在MySQL中,如果兩個表存在主外關係,則有五種引用操作,分別是 cascade、no action、restrict、set null和set default,有很多人對no action的restrict區別搞不清楚,其實在MySQL中是一樣的,原因如下:restrict是在修改或者刪除之前去檢查從表中是否有對應的資料,如果有,拒絕操作,而no action是來源標準的sql,在有些資料庫中,會延遲檢查,即在修改或者刪除完以後去檢查從表中是否有對應的資料,如果有,拒絕操作,但是在MySQL中,外來鍵約束都會立即檢查,所以兩者等價。需要注意的是,set default只是MySQL 解析器認可,但是InnoDB和NDB 拒絕在定義表時,出現ON DELETE SET DEFAULT or ON UPDATE SET DEFAULT 語句。