Masalah:
Anda ingin mengetahui nama default batasan dalam tabel di Oracle.
Contoh:
Dalam database kami, kami membuat dua tabel, country
dan student
, dengan batasan berikut:PRIMARY KEY
(id kolom dalam tabel country
dan student
), FOREIGN KEY
(kolom country_id
dalam tabel student
), DEFAULT
(kolom name
dalam tabel student
), UNIQUE
(kolom name
dalam tabel country
dan kolom personal_number
dalam tabel student
), dan CHECK
(kolom age
dalam tabel student
).
Solusi:
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) );
Mari kita tampilkan bagaimana Oracle menamai batasan tabel ini secara default. Gunakan kueri ini untuk melihatnya:
select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME from USER_CONSTRAINTS where TABLE_NAME='STUDENT' OR TABLE_NAME='COUNTRY';
Ini hasilnya:
CONSTRAINT_NAME | CONSTRAINT_TYPE | TABLE_NAME |
---|---|---|
SYS_C007376 | R | PELAJARAN |
SYS_C007366 | P | NEGARA |
SYS_C007374 | P | PELAJARAN |
SYS_C007367 | U | NEGARA |
SYS_C007375 | U | PELAJARAN |
SYS_C007372 | C | PELAJARAN |
Diskusi:
Saat kami membuat tabel kami, kami menetapkan batasan untuk beberapa kolom. Namun, kami tidak menentukan nama untuk batasan ini, sehingga diberi nama secara default. Bagaimana nama default untuk batasan dihasilkan?
Di Oracle, nama batasan default dimulai dengan nama pengguna, diikuti dengan ‘_C
' dan nomor urut. Jenis batasannya adalah ‘C
’ (check
), ‘P
’ (kunci utama), ‘U
' (batasan unik), dan 'R
' (kunci asing). Semua nama batasan default dibuat sebagai ‘SYS
’, ‘_
', dan nomornya. Anda dapat melihat nama default pada tabel di atas. Misalnya, CHECK
batasan untuk usia kolom di student
tabel memiliki nama SYS_C007372
.