Varsayımsal bir senaryoda, tablo oluşturma ayrıcalığı olmayan bir kullanıcıyım. Tablodaki bir sütunun UNIQUE CONSTRAINT olup olmadığını bilmek istiyorum. DICTIONARY'da bakmak mümkün mü? Nasıl giderim? Eğer böyle bir şey yapabilirsiniz benzersiz kısıtlamaları içinBir sütunun benzersiz bir kısıtlaması olup olmadığını bulun
cevap
Burada verilen yanıtların her ikisi de bir sütundaki benzersizliği zorunlu kılmanın bir yolunu özlüyor: benzersiz bir dizin oluşturarak (sütunda benzersiz bir kısıtlama tanımlamaksızın). Bu seçenek hakkında bilgi sahibi değilseniz, bu iki bağlantıya bakın (one, two). Alternatif
select count(*) cnt
from user_constraints uc
where uc.table_name='YOUR_TABLE_NAME'
and uc.constraint_type='U';
da içinde bakabilirsiniz:
select count(*) from
USER_IND_COLUMNS cols
where cols.table_name='YOUR_TABLE_NAME'
and cols.COLUMN_NAME='YOUR_COLUMN';
zaten sağlanan yöntemi kullanmak eşsiz bir kısıtlama olup olmadığını kontrol etmek için:
Bu kontrol benzersiz kısıtlama check ayrıca yapılmalıdır ALL_CONSTRAINTS
ve ALL_IND_COLUMNS
görünümleri.
:
select cons.constraint_type,
all_cols.owner, all_cols.constraint_name,
all_cols.table_name,
all_cols.column_name,
all_cols.position
from all_cons_columns col
inner join all_cons_columns all_cols
on col.owner = all_cols.owner
and col.constraint_name = all_cols.constraint_name
inner join all_constraints cons
on col.owner = cons.owner
and col.constraint_name = cons.constraint_name
where col.owner = 'SCHEMA'
and col.table_name = 'FOO'
and col.column_name = 'ID'
and cons.constraint_type in ('U', 'P')
order by owner, constraint_name, position;
ilgi sahibi, masa ve sütun ayarlamak ve size o sütun
Not kapsayacak bütün kısıtlamaları göstereceğine bu olmaz Bir sütun üzerinde benzersiz bir dizinin var olduğu tüm durumları göster (kısıtlama olmaksızın yerinde benzersiz bir indekse sahip olması mümkün).
örnek:
SQL> create table foo(id number, id2 number, constraint foo_con unique(id, id2), constraint foo_con2 unique(id));
Table created.
şimdi
id
kapsayacak tüm sınırlamaları listelemeye:
SQL> col column_name format a20
SQL> col constraint_name format a20
SQL> col table_name format a15
SQL> select cons.constraint_type,
2 all_cols.owner, all_cols.constraint_name,
3 all_cols.table_name,
4 all_cols.column_name,
5 all_cols.position
6 from all_cons_columns col
7 inner join all_cons_columns all_cols
8 on col.owner = all_cols.owner
9 and col.constraint_name = all_cols.constraint_name
10 inner join all_constraints cons
11 on col.owner = cons.owner
12 and col.constraint_name = cons.constraint_name
13 where col.owner = user
14 and col.table_name = 'FOO'
15 and col.column_name = 'ID'
16 and cons.constraint_type in ('U', 'P')
17 order by owner, constraint_name, position;
C OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION
- ------------------------------ -------------------- --------------- -------------------- ----------
U DTD_TRADE FOO_CON FOO ID 1
U DTD_TRADE FOO_CON FOO ID2 2
U DTD_TRADE FOO_CON2 FOO ID 1
select count(*) cnt
from user_constraints
where table_name=your_table_name
and constraint_type='U';
sayısı = 0 o zaman başka UNIQUE
kısıt Masanızda UNIQUE
kısıtlama yoktur yoksa.
Bu cevap benzersiz dizinleri kontrol etmiyor - detaylar için cevabıma bakın;) – SebastianH
İşte yeni denediğim bir sorgu. Bunu uygulayan endeksi ile tanımlanan her benzersiz kısıtlamayı, listeler ve sütunlar o özeldir: birincil anahtarlar, benzersiz dizinleri için çalışmak gibi
select x.index_name, c.column_name, c.column_position
from USER_INDEXES x join USER_IND_COLUMNS c
on x.index_name = c.index_name and x.table_name = c.table_name
left join USER_CONSTRAINTS uc
on x.index_name = uc.index_name and x.table_name = uc.table_name
where x.status = 'VALID' and
(x.uniqueness = 'UNIQUE' or
uc.constraint_type = 'U' and uc.status = 'ENABLED' and uc.validated = 'VALIDATED')
and x.table_name='<your table name_in_caps>'
order by x.index_name, c.column_position;
ve tekliği kısıtlamaları ekledi.
- 1. Pandalar veri kümesindeki bir sütunun veri türü olup olmadığını nasıl anlarım? Bir sütunun sayısal olup olmadığını nasıl anlarım?
- 2. Bir sütunun geçersiz olup olmadığını kontrol etmek için sorgu
- 3. Matriste her bir sütunun olasılığını bulun
- 4. Oluşturmadan önce benzersiz bir değer olup olmadığını kontrol edin
- 5. Verilere Ulaşılabilir Mevcut sütunun tarih olup olmadığını belirleme
- 6. Let bir sütunun
- 7. HERHANGİ bir sütunun NULL olup olmadığını kontrol etmenin hızlı bir yolu var mı?
- 8. Dosyayı oku ve tüm satırların aynı uzunlukta olup olmadığını bulun
- 9. En uzun listeyi içeren bir Pandalar DF'deki sütunun ismini bulun.
- 10. Tablo üzerinde kısıtlama olup olmadığını kontrol edin
- 11. std :: type_index, derleyicim için benzersiz olup olmadığını nasıl öğrenebilirim?
- 12. Alembic + Sqlalchemy Çoklu Sütun Benzersiz Kısıtlaması
- 13. Laravel 4 doğrulama e-postası benzersiz kısıtlaması
- 14. Perl DBI MySQL: Sütunun UNIQUE
- 15. Bir sütunun NULL OLMADIĞINI Bulma
- 16. SQL Server: Bir sütunun veri türü denetimi
- 17. URL bir görüntü olup olmadığını nasıl belirleyebilirim?
- 18. Türün bir arabirim olup olmadığını kontrol edin
- 19. Bir numpy dizisi simetrik olup olmadığını sınama?
- 20. Bir istemcinin canlı olup olmadığını öğrenmek için
- 21. bir işaretçi boş olup olmadığını kontrol Boost.Test
- 22. Bir değişkenin var olup olmadığını ve
- 23. Bir işlevin reentrant olup olmadığını nasıl bulurum?
- 24. Kontrol kilit bir Python listede olup olmadığını
- 25. Bir sınıf başvurulan olup olmadığını belirleme C#
- 26. Bir sayfanın açık olup olmadığını kontrol edin
- 27. Bu bir yarış durumu olup olmadığını söyleyemiyorum
- 28. Nesne bir vektör olup olmadığını test etme
- 29. Bir dosya olup olmadığını nasıl kontrol edebilirim?
- 30. Listenin bir türü olup olmadığını kontrol edin?
Bu cevap benzersiz dizinleri kontrol etmez - ayrıntılar için yanıtıma bakın;). – SebastianH