有兩個問題向大家請教,先謝謝了
先創建了如下的一個新表格
CREATE TABLE Persons_Form
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
然后有兩種情況,第一種是我對表格內容進行了編輯,編輯內容如下圖

然后添加條件設定陳述句
ALTER TABLE Persons_Form ADD CONSTRAINT chk_Id_city CHECK (City != 'sh')
這個時候就會報錯
第二種情況是不對表格內容進行編輯的情況下 (即City選項中不填入 'sh') 直接添加上面的那條個件設定陳述句,這個時候是可以正常添加的
然后這里有一些疑問,根據我自己原來的認知,在后添加條件設定之前大部分表格資料應該都是已經存在了大量的資料了,那如果已有資料中存在和check限定沖突的資料就無法添加新限定的話,那應該如何來添加新的限定條件呢,如果把原有資料再重新整理來滿足限定條件的話未免作業量太大了,不知我的理解是否存在偏頗
另外還有一個問題是我發現通過 ALTER TABLE Persons_Form ADD CHECK (City != 'sh') 的方式也可以添加限定條件,但如果移除限定的話用 ALTER TABLE Persons_Form DROP CHECK (City != 'sh') 會報錯,而網上查詢下來都是 DROP CHECK chk_Person 的方式,那這里的 chk_Person 是對應什么呢
uj5u.com熱心網友回復:
問題1:先把有違反約束條件的值的所有行,進行清空='',再做約束條件,不就行了?
問題2:
開啟和關閉約束:
//disable
SET FOREIGN_KEY_CHECKS = 0;
//enable
SET FOREIGN_KEY_CHECKS = 1;
//查看當前FOREIGN_KEY_CHECKS的值可用如下命令
SELECT @@FOREIGN_KEY_CHECKS;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/281871.html
標籤:基礎類
上一篇:INSERTED之后更新資料
下一篇:佳能列印機
