คุณจะบอกได้อย่างไรว่าตารางใน DB2 มีคีย์หลัก?


9

เรากำลังใช้เครื่องมือที่ต้องการตารางเฉพาะในฐานข้อมูล DB2 ของเราเพื่อกำหนดคีย์หลัก

มีวิธีการใช้คำสั่งเลือกบนฐานข้อมูลเพื่อดูว่าตารางที่กำหนดมีหนึ่งหรือไม่

ขอบคุณ

คำตอบ:


10

คำเตือน: ฉันไม่รู้จัก DB2

ฉันเพียงแค่ googled เหล่านี้ด้วย "คำจำกัดความตาราง db2"

ที่มา:

SELECT * 
FROM SYSIBM.SYSTABLES TAB,SYSIBM.SYSCOLUMNS COL 
WHERE TAB.CREATOR = COL.TBCREATOR 
AND TAB.CREATOR = 'xxxx' 
AND TAB.NAME = 'xxxxxxxxxxxxx' 
AND TAB.NAME = COL.TBNAME 
AND TAB.TYPE = 'V' ( OR 'T' ) 
ORDER BY 1,2;

ที่มา:

SELECT * FROM syscat.tabconst WHERE type = 'P';

1
TAB.TYPE = 'V' จะให้มุมมองแก่คุณซึ่งฉันเชื่อว่าคุณไม่ต้องการ ใช้ TAB.TYPE = 'T' สำหรับตาราง
GilShalit

8

คุณสามารถทำ a db2lookซึ่งจะให้ ddls สำหรับตาราง

db2look -d db_name -e -x -z schema_name -t table_name

ยินดีต้อนรับสู่ dba.se และขอบคุณสำหรับคำตอบที่เป็นประโยชน์นี้ - ฉันหวังว่าคุณจะไม่สนใจการแก้ไขการจัดรูปแบบของฉัน
แจ็คบอกว่าลอง topanswers.xyz

@JackDouglas - ขอบคุณสำหรับการแก้ไขเหล่านี้ดูสวยอ่านได้แล้วตอนนี้
Govind Kailas

0

นี่อาจเป็นตัวเลือกที่ง่ายที่สุดเนื่องจากคีย์หลักได้รับการสนับสนุนโดยดัชนีที่ตรงกัน:

select COLNAMES from SYSIBM.SYSINDEXES where tbname = 'TABLE' and uniquerule = 'P';

คุณสามารถสืบค้นตารางแคตตาล็อกคอลัมน์:

select NAME from SYSIBM.SYSCOLUMNS where tbname = 'TABLE' and keyseq > 0 order by keyseq;

2
คีย์หลักไม่ใช่ดัชนี (แม้ว่าจะรองรับโดยหนึ่ง)
mustaccio

0
  1. SYSCAT.INDEXES.UNIQUERULE (ถ้า UNIQUERULE เป็น P ดังนั้นคีย์หลัก)
  2. SYSCAT.TABCONST.TYPE (ถ้า Type เป็น P แล้วข้อ จำกัด คีย์หลัก)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.