Tôi đang tìm kiếm (tốt nhất là) một câu lệnh SQL chọn tên bảng / và tên cột cho bất kỳ bảng nào có khóa ngoại với bảng đã cho trong Sybase. Tôi nghĩ rằng bằng cách nào đó có thể với các sys...
bảng nhưng hoàn toàn mới đối với sybase, tôi không thể tạo ra đầu cũng như ngón chân của nó. Vì vậy, bất kỳ trợ giúp vào đúng hướng được đánh giá cao.
Chỉnh sửa: Vì lợi ích của sự hoàn thiện: SELECT @@VERSION
trả về
'Doanh nghiệp máy chủ thích ứng / 15.0.3 / EBF 17156 ESD # 3 / P / Sun_auss4 / OS 5,8 / ase1503 / 2726/64-bit / FBO / Thứ Sáu 5 tháng 5 05:26:23 2010'
Chỉnh sửa 2
Cảm ơn rất nhiều về đề xuất của bạn, đặc biệt là nhận xét của Andrew Bickerton . Điều đó cho phép tôi xây dựng một câu lệnh chọn SQL thô sơ cho điểm bắt đầu để đi xa hơn.
Trong trường hợp người khác quan tâm đến nó, đây là:
select
fko.name "Foreign key name",
par.name "Referenced table name",
fk1.name || ' -> ' || pk1.name "Reference 1",
fk2.name || ' -> ' || pk2.name "Reference 2",
fk3.name || ' -> ' || pk3.name "Reference 3",
fk4.name || ' -> ' || pk4.name "Reference 4"
from
sysobjects tab join
sysconstraints con on tab.id = con.tableid join
sysobjects fko on con.constrid = fko.id join
sysreferences ref on con.constrid = ref.constrid join
sysobjects par on par.id = ref.reftabid left join
---- 1. Column
syscolumns fk1 on ref.fokey1 = fk1.colid and
ref.tableid = fk1.id left join
syscolumns pk1 on ref.refkey1 = pk1.colid and
ref.reftabid = pk1.id left join
---- 2. Column
syscolumns fk2 on ref.fokey2 = fk2.colid and
ref.tableid = fk2.id left join
syscolumns pk2 on ref.refkey2 = pk2.colid and
ref.reftabid = pk2.id left join
---- 3. Column
syscolumns fk3 on ref.fokey3 = fk3.colid and
ref.tableid = fk3.id left join
syscolumns pk3 on ref.refkey3 = pk3.colid and
ref.reftabid = pk3.id left join
---- 4. Column
syscolumns fk4 on ref.fokey4 = fk4.colid and
ref.tableid = fk4.id left join
syscolumns pk4 on ref.refkey4 = pk4.colid and
ref.reftabid = pk4.id -- Et cetera...
where
tab.type = 'U' and
tab.name = 'tq84_f' and
fko.type = 'RI'