亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當我添加數據時故意反著添加,這條數據還是可以添加進去?為什么呢?

當我添加數據時故意反著添加,這條數據還是可以添加進去?為什么呢?

喵喵時光機 2022-05-01 13:09:34
在用MySQL建數據庫的時候,要設定一些constraint啊,比如,一個表格里有兩個日期,其中一個日期必須在另一個日期之前,我用的如下語句:alter table 表名稱 add constraint 約束名稱 check(第一日期<第二日期)用了之后輸出如下:mysql> alter table client add constraint dateConstraint check(dateCheckIn<dateCheckOut);Query OK, 0 rows affected (0.02 sec)Records: 0 Duplicates: 0 Warnings: 0但是當我添加數據時故意反著添加,把dateCheckIn設在dateCheckOut之后,為什么這條數據還是可以添加進去?。坎皇谴颂幰呀浵拗屏藛??求解答,謝謝
查看完整描述

2 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

這是因為mysql是不支持check的,雖然語法上不會報錯是,分析建表語句的時候會被忽略.以下是從手冊中摘出來的原文.
=============
Innodb存儲引擎支持FOREIGN KEY和REFERENCES子句。Innodb存儲引擎執行ADD [CONSTRAINT [symbol]] FOREIGN KEY (...) REFERENCES ... (...)。請參見15.2.6.4節,“FOREIGN KEY約束”。對于其它存儲引擎,這些子句會被分析,但是會被忽略。對于所有的存儲引擎,CHECK子句會被分析,但是會被忽略。請參見13.1.5節,“CREATE TABLE語法”。接受這些子句但又忽略子句的原因是為了提高兼容性,以便更容易地從其它SQL服務器中導入代碼,并運行應用程序,創建帶參考數據的表。請參見1.8.5節,“MySQL與標準SQL的差別”。
==============
注意:CHECK子句會被分析,但是會被忽略。



查看完整回答
反對 回復 2022-05-04
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

修改表 albums,為他添加一個外鍵約束.這個約束建在本表的genre_id列上. 參考的是genres表的id列.
這個約束的作用是,保證albums表的genre_id列必須包含在genres表的id列中,要不然插入數據就會報錯.
下面的:
ON DELETE CASCADE 如果被引用表的某id被刪除時,關聯刪除albums表中genre_id列與其相等的記錄.
ON UPDATE CASCADE 如果被引用表的某id被更新時,同時更新albums表中genre_id列與其相等的記錄.



查看完整回答
反對 回復 2022-05-04
  • 2 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號