我需要為下表創建一個約束,遵循 CODE 和 CAR 列的連接必須是唯一的規則,換句話說,如果有人在下表中插入了 CODE = 7 和 CAR = 'AUTO'規則應該防止插入此記錄并回傳一個錯誤,我可以使用訊息“CODE & CAR values must be unique”自定義該錯誤。
我正在 ORACLE SQL 中執行此操作,并且我認為約束不是執行此任務的更好方法。
我該怎么做?
謝謝!
CODE CAR
------------
1 AUTO
1 MANUAL
3 AUTO
3 MANUAL
5 AUTO
5 MANUAL
7 AUTO
7 MANUAL
uj5u.com熱心網友回復:
對我來說,最簡單的方法是創建唯一索引。
SQL> create table car (code number, car varchar2(20));
Table created.
SQL> create unique index code_and_car_must_be_unique on car (code, car);
Index created.
SQL> insert into car (code, car) values (1, 'Auto');
1 row created.
SQL> insert into car (code, car) values (1, 'Auto');
insert into car (code, car) values (1, 'Auto')
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.CODE_AND_CAR_MUST_BE_UNIQUE) violated
SQL>
或者,正如@astentx 所評論的,使用約束(結果是相同的,但):
SQL> drop index code_and_car_must_be_unique;
Index dropped.
SQL> alter table car add constraint code_and_car_must_be_unique
2 unique (code, car);
Table altered.
SQL> insert into car (code, car) values (1, 'Auto');
insert into car (code, car) values (1, 'Auto')
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.CODE_AND_CAR_MUST_BE_UNIQUE) violated
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349311.html
上一篇:如何使用虛擬列執行SQL-INSERT/UPDATE
下一篇:如果id相同,則聯合替換行
