PK FK ilişkilerini ayarlamayı denediğim tablolar var ancak bunu doğrulamak istiyorum. PK/FK sınırlamalarını nasıl gösterebilirim? this manuel sayfasını gördüm, ancak örnekleri göstermiyor ve google arama da sonuçsızdı. Veritabanım kimlik bilgisi1 ve kısıtlı tablolarım uygulamalar ve cred_insurances. yapıyorTablolar üzerinde kısıtlamaları göster komutu
cevap
Ben Bu, mevcut haliyle mytable
receate için gerekli SQL deyimi gösterir
SHOW CREATE TABLE mytable;
kullanın. Tüm sütunları ve türlerini (DESC
gibi) görebilirsiniz, ancak aynı zamanda kısıtlama bilgilerini (ve tablo türü, karakter kümesi vb.) Gösterir.
USE INFORMATION_SCHEMA;
SELECT TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = "<your_database_name>"
AND TABLE_NAME = "<your_table_name>"
AND REFERENCED_COLUMN_NAME IS NOT NULL;
Dene:
SHOW TABLE STATUS FROM credentialing1;
yabancı anahtar kısıtlamaları çıktı Yorum sütununda listelenir.
Açıklama sütununda yalnızca tablo yorumlarını görüyorum. Bu muhtemelen InnoDB tipleri ile ilgili bir şeydir. – clockworkgeek
Yorumlar sadece kullanıcı yorumları içindir. Elbette FK tanımlarının saklandığı yer değil! Onlar sizin için iseniz - bazı RDBMS aracı tarafından sizin adınıza yapılmış olması gerekir. – stamster
Basitçe INFORMATION_SCHEMA sorgulamak
select
table_name,column_name,referenced_table_name,referenced_column_name
from
information_schema.key_column_usage
where
referenced_table_name is not null
and table_schema = 'my_database'
and table_name = 'my_table'
Ya da daha biçimlendirilmiş çıktı kullanılmak üzere
bu:select
concat(table_name, '.', column_name) as 'foreign key',
concat(referenced_table_name, '.', referenced_column_name) as 'references'
from
information_schema.key_column_usage
where
referenced_table_name is not null
and table_schema = 'my_database'
and table_name = 'my_table'
Bu, en iyi yanıttır çünkü size programlı olarak kullanabileceğiniz bir biçimde sonuç verir. Tabii ki sonuçları daraltmak için bir WHERE yan tümcesi eklemeniz gerekecek –
Bu, 'yabancı' anahtarını gösteren birkaç bozuk anahtar içeren bozuk bir tablo bulmama yardımcı oldu. Şaşılacak bir tablo yok 1452 IntegrityError. –
Bu harika bir cevap! Teşekkür @ Resh32 – simhumileco
Bu kullanabilirsiniz:
ORA-00942 AÇIK: Tablo veya Görünüm yok 00942. 00000 - "tablo veya görünümü yok" * Neden: * Eylem: Line'da Hata: 29 Kolon: 5 29. satır Eğer Oracle o çalışıyoruz "information_schema.key_column_usage" – noboundaries
@noboundaries, soru – ymajoros
valide cevapla temel sorun bilgileri almak için çıktıyı ayrıştırmak zorunda kalacaksınız.
SELECT cols.TABLE_NAME, cols.COLUMN_NAME, cols.ORDINAL_POSITION,
cols.COLUMN_DEFAULT, cols.IS_NULLABLE, cols.DATA_TYPE,
cols.CHARACTER_MAXIMUM_LENGTH, cols.CHARACTER_OCTET_LENGTH,
cols.NUMERIC_PRECISION, cols.NUMERIC_SCALE,
cols.COLUMN_TYPE, cols.COLUMN_KEY, cols.EXTRA,
cols.COLUMN_COMMENT, refs.REFERENCED_TABLE_NAME, refs.REFERENCED_COLUMN_NAME,
cRefs.UPDATE_RULE, cRefs.DELETE_RULE,
links.TABLE_NAME, links.COLUMN_NAME,
cLinks.UPDATE_RULE, cLinks.DELETE_RULE
FROM INFORMATION_SCHEMA.`COLUMNS` as cols
LEFT JOIN INFORMATION_SCHEMA.`KEY_COLUMN_USAGE` AS refs
ON refs.TABLE_SCHEMA=cols.TABLE_SCHEMA
AND refs.REFERENCED_TABLE_SCHEMA=cols.TABLE_SCHEMA
AND refs.TABLE_NAME=cols.TABLE_NAME
AND refs.COLUMN_NAME=cols.COLUMN_NAME
LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS cRefs
ON cRefs.CONSTRAINT_SCHEMA=cols.TABLE_SCHEMA
AND cRefs.CONSTRAINT_NAME=refs.CONSTRAINT_NAME
LEFT JOIN INFORMATION_SCHEMA.`KEY_COLUMN_USAGE` AS links
ON links.TABLE_SCHEMA=cols.TABLE_SCHEMA
AND links.REFERENCED_TABLE_SCHEMA=cols.TABLE_SCHEMA
AND links.REFERENCED_TABLE_NAME=cols.TABLE_NAME
AND links.REFERENCED_COLUMN_NAME=cols.COLUMN_NAME
LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS cLinks
ON cLinks.CONSTRAINT_SCHEMA=cols.TABLE_SCHEMA
AND cLinks.CONSTRAINT_NAME=links.CONSTRAINT_NAME
WHERE cols.TABLE_SCHEMA=DATABASE()
AND cols.TABLE_NAME="table"
afaik sen ayrıcalıkları gerek information_schema
bir istek yapmak için: Burada daha kullanışlı bir şekilde onları almak için izin veren bir sorgu olduğunu. Eğer tuşlarının basit bir liste gerekiyorsa bu komutu kullanabilirsiniz:
SHOW INDEXES IN <tablename>
sayesinde –
Nasıl aradığını information_schema bu daha iyidir benim için çalıştı yaklaşık MySQL –
Serin sayesinde çok teşekkürler, bu en iyi –
bunu anahtarları gösterecektir --k keys $table_name
seçeneğiyle çalıştırın Eğer oracle mysqlshow
denilen yapılan bir araç da vardır.
SYNOPSIS
mysqlshow [options] [db_name [tbl_name [col_name]]]
.......
.......
.......
· --keys, -k
Show table indexes.
örnek:
╰─➤ mysqlshow -h 127.0.0.1 -u root -p --keys database tokens
Database: database Table: tokens
+-----------------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-----------------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| id | int(10) unsigned | | NO | PRI | | auto_increment | select,insert,update,references | |
| token | text | utf8mb4_unicode_ci | NO | | | | select,insert,update,references | |
| user_id | int(10) unsigned | | NO | MUL | | | select,insert,update,references | |
| expires_in | datetime | | YES | | | | select,insert,update,references | |
| created_at | timestamp | | YES | | | | select,insert,update,references | |
| updated_at | timestamp | | YES | | | | select,insert,update,references | |
+-----------------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
+--------+------------+--------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------+------------+--------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| tokens | 0 | PRIMARY | 1 | id | A | 2 | | | | BTREE | | |
| tokens | 1 | tokens_user_id_foreign | 1 | user_id | A | 2 | | | | BTREE | | |
+--------+------------+--------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
@Resh32 benzer şekilde, ancak USE
deyimi kullanmaya gerek kalmadan:
SELECT TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = "database_name"
AND TABLE_NAME = "table_name"
AND REFERENCED_COLUMN_NAME IS NOT NULL;
yararlı, örneğin ORM kullanarak.
olduğunu olmasıdır yani gerçek kısıtlama kurallarını göstermez - örn. GÜNCELLEME CASCADE ' – stamster
- 1. Emacs shell komutu arabellek üzerinde
- 2. karmaşık mysql kısıtlamaları
- 3. Google E-Tablolar: belirli kullanıcılar için farklı satırlar göster
- 4. Tek bir masanın üzerinde sonuçları göster
- 5. webview üzerinde ilerleme iletişim kutusunu göster
- 6. Hover üzerinde dt & dd göster ve gizle
- 7. LOCK TABLOLAR
- 8. LaTeX'te Çok Geniş Tablolar
- 9. C# Genel Bağlantı Kısıtlamaları Kısıtlamaları Çevresi Nasıl Çalışır?
- 10. Android SharedPreferences kısıtlamaları?
- 11. Silverlight'taki yansıma kısıtlamaları
- 12. MySQL ve Check Kısıtlamaları
- 13. ElasticSearch ID kısıtlamaları
- 14. MIPS bellek kısıtlamaları?
- 15. SQL Kısıtlamaları Soru
- 16. CSV ilk hücre kısıtlamaları
- 17. Dosya Sistemi Kısıtlamaları Alma
- 18. SQL komutu
- 19. Zaman kısıtlamaları ile Neo4J ilişkileri
- 20. MySQL'den yalnızca belirli tablolar nasıl dökümlenir?
- 21. Yabancı kısıtlamaları olan birden çok tablodan silme
- 22. komutu?
- 23. Oracle dış tablolar -
- 24. Toplama olmadan Pivot tablolar?
- 25. Tablolar, alt grup sıralama
- 26. Ormlite iç üç tablolar
- 27. I2 tablolar exist doğrulama
- 28. HTML Çoklu Tablolar
- 29. oluştur GroupBy Tablolar Dinamik
- 30. Harici Tablolar vs SQLLoader
Gelen fk ilişkilerini göstermeyi düşünmüyorum? Örneğin, “a.col_one b.col_one” referansları ve “show table b” ifadesi, yukarıda bahsedilen ilişki hakkında ayrıntı içermeyecektir. –
Bu komutun yabancı anahtar kısıtlamasını göstermediğini doğruladım. –
MariaDB'nin 10 ile başladığına dikkat edin.2 burada garip sonuçlara dönecektir. https://jira.mariadb.org/browse/MDEV-15377 – stamster