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 .