Tôi muốn xác định thông điệp của riêng tôi cho mỗi ràng buộc. Có thể tùy chỉnh các thông báo vi phạm ràng buộc trong PostgreSQL không?
Tôi muốn xác định thông điệp của riêng tôi cho mỗi ràng buộc. Có thể tùy chỉnh các thông báo vi phạm ràng buộc trong PostgreSQL không?
Câu trả lời:
Điều này đã được hỏi trong Diễn đàn Postgres: Lỗi vi phạm ràng buộc tùy chỉnh
và sau một số cuộc thảo luận:
...
Vậy tôi có đúng không, nếu tôi muốn có các thông báo lỗi tùy chỉnh do vi phạm khóa ngoại, tôi cần thay thế tất cả các khóa bằng chức năng kích hoạt?!Michael Musenbrock
trả lời ở đó:
Câu trả lời ngắn gọn là, trong khi có thể tùy chỉnh thực hiện các kích hoạt ràng buộc của riêng bạn mô phỏng các khóa ngoại, đừng làm điều đó. Đây sẽ là một cơn ác mộng bảo trì.
Tôi sẽ dễ bảo trì hơn để bắt những lỗi này trong ứng dụng khách của bạn. Tại đây bạn sẽ sắp xếp lại các thông báo lỗi này theo các quy tắc kinh doanh của ứng dụng khách của bạn.
Richard Broersma Jr.
với những gì tôi nghĩ sẽ làm việc tốt nhất:
Không khó để tạo ra:
CONSTRAINT some_constraint_name FOREIGN KEY col REFERENCES blah(id)
... sau đó trong ứng dụng, khớp
"some_constraint_name"
và ánh xạ nó tới một lỗi phù hợp. Đó là những gì tôi làm và nó hoạt động rất tốt cho tất cả các loại ràng buộc, không chỉ các ràng buộc khóa ngoài.-
Craig Ringer