Vấn đề:
Bạn muốn biết tên mặc định của các ràng buộc trong bảng trong Oracle.
Ví dụ:
Trong cơ sở dữ liệu của chúng tôi, chúng tôi tạo hai bảng, country
và student
, với các ràng buộc sau:PRIMARY KEY
(id cột trong bảng country
và student
), FOREIGN KEY
(cột country_id
trong bảng student
), DEFAULT
(cột name
trong bảng student
), UNIQUE
(cột name
trong bảng country
và cột personal_number
trong bảng student
) và CHECK
(cột age
trong bảng student
).
Giải pháp:
CREATE TABLE country ( id int NOT NULL primary key, name varchar(100) UNIQUE ); CREATE TABLE student ( id int NOT NULL primary key, name varchar(100) DEFAULT 'UNKNOWN', personal_number varchar(100) UNIQUE, age int CHECK(age>15), country_id int, FOREIGN KEY(country_id) references country(id) );
Hãy hiển thị cách Oracle đặt tên cho các ràng buộc của các bảng này theo mặc định. Sử dụng truy vấn này để xem chúng:
select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME from USER_CONSTRAINTS where TABLE_NAME='STUDENT' OR TABLE_NAME='COUNTRY';
Đây là kết quả:
CONSTRAINT_NAME | CONSTRAINT_TYPE | TABLE_NAME |
---|---|---|
SYS_C007376 | R | SINH VIÊN |
SYS_C007366 | P | QUỐC GIA |
SYS_C007374 | P | SINH VIÊN |
SYS_C007367 | Ư | QUỐC GIA |
SYS_C007375 | Ư | SINH VIÊN |
SYS_C007372 | C | SINH VIÊN |
Thảo luận:
Khi chúng tôi tạo bảng của mình, chúng tôi đặt các ràng buộc cho một số cột. Tuy nhiên, chúng tôi không chỉ định tên cho các ràng buộc này, vì vậy chúng được đặt tên theo mặc định. Tên mặc định cho các ràng buộc được tạo như thế nào?
Trong Oracle, tên ràng buộc mặc định bắt đầu bằng tên người dùng, theo sau là ‘_C
'Và một số thứ tự. Các loại ràng buộc là ‘C
’(check
), ‘P
’(Khóa chính),‘ U
’(Ràng buộc duy nhất) và‘ R
’(Khóa ngoại). Tất cả các tên ràng buộc mặc định được tạo dưới dạng ‘SYS
’,‘ _
', Và số. Bạn có thể thấy các tên mặc định trong bảng trên. Ví dụ:CHECK
ràng buộc tuổi cột trong student
bảng có tên SYS_C007372
.