Trong máy chủ Derby, làm cách nào bạn có thể sử dụng thông tin trong các bảng hệ thống của lược đồ để tạo một câu lệnh chọn để truy xuất các tên ràng buộc cho mỗi bảng?Derby - ràng buộc
Trả lời
Hướng dẫn có liên quan là Derby Reference Manual. Có rất nhiều phiên bản có sẵn: 10.13 là hiện vào tháng Tư năm 2017, nhưng nó đã được 10,3 tháng năm 2009.
câu trả lời gốc
SELECT c.constraintname, t.tablename
FROM sysconstraints c, systables t
WHERE c.tableid = t.tableid;
Kể từ khi phiên bản đầy đủ gần đây của Derby đòi hỏi rằng các bảng danh mục hệ thống được bắt đầu bởi sys.
(10.13 được trích dẫn bởi kiwicomb123 trong một comment), bạn có thể sửa đổi các truy vấn để sử dụng rõ ràng THAM GIA ký hiệu quá, và sử dụng:
SELECT c.constraintname, t.tablename
FROM sys.sysconstraints c
JOIN sys.systables t
ON c.tableid = t.tableid;
Bạn có thể thêm cột bổ sung - ví dụ: c.type
để nhận loại ràng buộc.
SELECT sc.schemaname, co.constraintname, t.tablename, cg.descriptor, t2.tablename, cg2.descriptor, f.deleterule, f.updaterule
FROM sys.sysconstraints co
JOIN sys.sysschemas sc ON co.schemaid = sc.schemaid
JOIN sys.systables t ON co.tableid = t.tableid
JOIN sys.sysforeignkeys f ON co.constraintid = f.constraintid
JOIN sys.sysconglomerates cg ON f.conglomerateid = cg.conglomerateid
JOIN sys.sysconstraints co2 ON f.keyconstraintid = co2.constraintid
JOIN sys.systables t2 ON co2.tableid = t2.tableid
JOIN sys.syskeys k ON co2.constraintid = k.constraintid
JOIN sys.sysconglomerates cg2 ON k.conglomerateid = cg2.conglomerateid
WHERE co.type = 'F'
and sc.schemaname = current schema
hai mục mô tả chứa một danh sách các số cột cho mỗi bảng, giống như
BTREE (2,1)
nơi các con số tương ứng với số cột trong bảng syscolumns cho bảng tương ứng.
Nếu có ai có cách trích xuất trang nhã này trong truy vấn này, tôi muốn biết. Tôi nhận được một danh sách tất cả các cột cho một bảng trong một truy vấn riêng biệt và trích xuất các tên từ đó sau khi phân tích các bộ mô tả để lấy các số.
- 1. std :: ràng buộc một hàm ràng buộc
- 2. Mẫu ràng buộc với ràng buộc là gì?
- 3. WPF ràng buộc FallbackValue thiết lập để ràng buộc
- 4. Ràng buộc DataGridTemplateColumn
- 5. Ràng buộc Oracle
- 6. Ràng buộc các Procs
- 7. Ràng buộc cổng Python
- 8. Ràng buộc Postgresql
- 9. Buộc ràng buộc duy nhất trong GAE
- 10. Ràng buộc loại CodeDom chung
- 11. Hiệu suất ràng buộc WCF
- 12. Ràng buộc hộp mật khẩu
- 13. ElementName Ràng buộc là không
- 14. ALTER TABLE thêm ràng buộc
- 15. R ràng buộc cho Mapnik?
- 16. Ràng buộc WPF theo Kiểu
- 17. jstree: ràng buộc chiều rộng
- 18. Oracle tìm một ràng buộc
- 19. Python ràng buộc để ImageMagick
- 20. Ràng buộc với UserControl DependencyProperty
- 21. Ràng buộc bản mẫu C++
- 22. ràng buộc NSTextField với NSNumber
- 23. Ràng buộc Qt với LLVM
- 24. OneWay ràng buộc trên WinForms?
- 25. RadioButton IsChecked mất ràng buộc
- 26. MVVM ràng buộc với InkCanvas
- 27. Ràng buộc FFI và DSL
- 28. Ràng buộc dữ liệu WinForms
- 29. mẫu loại bỏ ràng buộc
- 30. WPF ràng buộc với Grid.ColumnSpan
Có cách nào để biết loại ràng buộc không? –
Tôi đoán tôi có thể RTFM cho bạn. Sysconstraints.Type là một trường CHAR (1) có một trong các giá trị 'U' (Duy nhất), 'P' (Chính), 'F' (khóa ngoại) hoặc 'C' (Kiểm tra). Tuy nhiên, khi được đưa ra các tài liệu hướng dẫn, nó thường là hợp lý để đi và đọc tài liệu. –
Truy vấn này không hoạt động trong Derby 10.13, bạn phải đặt trước tên bảng sysconstraints và sysconstraints với "sys". Ví dụ: Sử dụng sys.sysconstraints thay vì sysconstraints. – kiwicomb123