記錄一下新增CHECK約束的乙個小問題

2021-09-19 17:34:00 字數 900 閱讀 6131

建表語句

create table test_score ( stu_name varchar(10), course varchar(10), score int)/*建表*/

很簡單的乙個建表語句,在建表的時候沒有新增任何約束條件。現在我想加乙個check約束條件,檢查分數範圍在0-100之間以保證資料的正確性和有效性。

增加約束語句如下:

alter table test_score --drop constraint ck_sc add constraint ck_sc check(score between 0 and 100)

但是系統卻報錯

訊息 547,級別 16,狀態 0,第 1 行

alter table 語句與 check 約束"ck_sc"衝突。該衝突發生於資料庫"liu",表"dbo.test_score", column 'score'。

這讓我一頭霧水,很正常的語句為什麼會報錯?

檢視一下表的資料

這下子就找到問題所在了。原來在我之前寫過乙個儲存過程,將一行的score值改為了101,自然超出了約束範圍0-100,所以系統不讓我新增約束條件…

將範圍擴大,改為 0-150

alter table test_score --drop constraint ck_sc add constraint ck_sc check(score between 0 and 150)

bingo

2020 06 07記錄一下

軟體測試技術型方向 自動化測試工程師,效能測試工程師,安全測試工程師等專項技術方發展 初級軟體測試人員專業知識 1 軟體功能測試技術,體現在用例設計和缺陷設計兩方面。主要包括軟體需求規格說明書的評審 測試計畫 測試用例設計技術 環境搭建 測試執行 缺陷提交 回歸測試 測試報告等。2 web自動化測試...

記錄一下進展

最近倆周都在除錯caffe的windows和matlab聯合使用,真的是超級鬱悶的一段時間。caffe編譯通過,但是目前有些不能用,當使用image data時,prototxt檔案解析失敗,我也不知道到底怎麼回事。另外乙個,在matlab呼叫caffe的mex檔案時,總是在初始化就失敗了。具體原因...

記錄一下 exists 用法

在 mysql 中,插入 insert 一條記錄很簡單,但是一些特殊應用,在插入記錄前,需要檢查這條記錄是否已經存在,只有當記錄不存在時才執行插入操作,本文介紹的就是這個問題的解決方案。問題 我建立了乙個表來存放客戶資訊,我知道可以用 insert 語句插入資訊到表中,但是怎麼樣才能保證不會插入重複...