架構
create table course (course_id varchar(8), title varchar(50), dept_name varchar(20), credits numeric(2,0) check (credits > 0), primary key (course_id), foreign key (dept_name) references department (dept_name) on delete set null );
我想將此資料新增到表中,但無法新增 0 個積分。
“CS-001”,標題為“每週研討會”,0 學分
插入查詢
INSERT INTO `course`(`course_id`, `title`, `credits`) VALUES ('CS-001','Weekly Seminar','0');
查詢結果:
有沒有其他方法可以在不改變表結構的情況下插入相同的資料?
foreign_key_checks
選項會影響外鍵強制執行,而不是檢查約束強制執行。您必須使用
ALTER TABLE
,但不必刪除約束。但是一旦插入該行,就無法重新啟用檢查約束,因為啟用約束時將重新檢查行。
您可以隨後刪除或更新違反檢查約束的行,然後重新啟用約束。
如果您需要能夠向
credits
欄位插入零值,那麼check (credits > 0)
似乎不是那個欄位。也許需要檢查(學分> = 0)
。