Adlı bir kısıtlamam var users.SYS_C00381400
. Bu kısıtlamanın ne olduğunu nasıl bulabilirim? Tüm kısıtlamaları sorgulamanın bir yolu var mı?
Adlı bir kısıtlamam var users.SYS_C00381400
. Bu kısıtlamanın ne olduğunu nasıl bulabilirim? Tüm kısıtlamaları sorgulamanın bir yolu var mı?
Yanıtlar:
select * from all_constraints
where owner = '<NAME>'
and constraint_name = 'SYS_C00381400'
/
Tüm veri sözlüğü görünümlerinde olduğu gibi, geçerli şemanızı ve yönetim kullanıcıları için bir DBA_CONSTRAINTS görünümünü kontrol etmek istiyorsanız bu bir USER_CONSTRAINTS görünümdür.
Kısıtlama adının yapısı, sistem tarafından oluşturulan bir kısıtlama adını belirtir. Örneğin, bir tablo bildiriminde NOT NULL belirtirsek. Veya aslında birincil veya benzersiz bir anahtar. Örneğin:
SQL> create table t23 (id number not null primary key)
2 /
Table created.
SQL> select constraint_name, constraint_type
2 from user_constraints
3 where table_name = 'T23'
4 /
CONSTRAINT_NAME C
------------------------------ -
SYS_C00935190 C
SYS_C00935191 P
SQL>
'C'
kontrol 'P'
için, birincil için.
Genellikle ilişkisel kısıtlamalara açık bir ad vermek iyi bir fikirdir. Örneğin, veritabanı birincil anahtar için bir dizin oluşturursa (bu sütun zaten dizine eklenmemişse yapılacaktır), dizin adı oo adı olan kısıtlama adını kullanır. Like adında dizinlerle dolu bir veritabanı istemezsiniz SYS_C00935191
.
Dürüst olmak gerekirse, çoğu insan NOT NULL kısıtlamaları adlandırmak zahmet etmeyin.
Daha ayrıntılı bir açıklama almak için (hangi tablo / sütun hangi tablo / sütun referansları) aşağıdaki sorguyu çalıştırabilirsiniz:
SELECT uc.constraint_name||CHR(10)
|| '('||ucc1.TABLE_NAME||'.'||ucc1.column_name||')' constraint_source
, 'REFERENCES'||CHR(10)
|| '('||ucc2.TABLE_NAME||'.'||ucc2.column_name||')' references_column
FROM user_constraints uc ,
user_cons_columns ucc1 ,
user_cons_columns ucc2
WHERE uc.constraint_name = ucc1.constraint_name
AND uc.r_constraint_name = ucc2.constraint_name
AND ucc1.POSITION = ucc2.POSITION -- Correction for multiple column primary keys.
AND uc.constraint_type = 'R'
AND uc.constraint_name = 'SYS_C00381400'
ORDER BY ucc1.TABLE_NAME ,
uc.constraint_name;
Gönderen burada .