2012-11-29 9 views
1

계산 된 열을 추가 할 테이블이 있습니다 (각 사용자마다 다른 값이 사용 권한이 필요함).
이 테이블은 계산 된 열에 대해 알지 못하는 Microsoft Dynamics NAV의 일부입니다.
NAV를 생성 한 후 열 유형을 변경하여 NAV를 읽는 방법을 관리했습니다.

이제 인서트가 붙어 있습니다.
NAV는 Null 허용 열을 사용하지 않으므로 항상 기본값을 삽입하려고하며 SQL Server는 계산 된 열에서 오류와 함께 실패합니다.
INSTEAD OF INSERT 트리거를 작성하려고했지만 SQL Server가 트리거를 실행하기 전에 검사를 수행하고 있으며 여전히 오류와 함께 실패합니다.
SQL Server가 오류를 발생시키는 대신 계산 된 열의 삽입을 무시하도록하는 방법은 무엇입니까?

SQL Server에서 계산 된 열의 삽입 된 값을 무시하도록 할 수있는 방법이 있습니까?

답변

2

개인적으로 필자는 타사 응용 프로그램, 특히 금융 시스템의 스키마를 변경하지 않을 것입니다. 테이블을 변경하는 대신 계산 된 열 정의를 포함하는 뷰를 원하는 다른 데이터베이스에서 만들 수 있으며 뷰에 INSTEAD OF 트리거를 넣고 뷰를 통해 INSERT을 수행 할 수 있습니다.

+0

처음에는 변경하지 말고보기를 작성한다고 말하면서 어떤 양식을 다시 바인딩하면 다른 개발자/컨설턴트에게 훨씬 큰 변화와 혼란이 있음을 알 수 없습니다. 또한 뷰를 사용하여 좋은 성능을 얻는 방법을 관리하지 못했습니다. 어떻게 든 NAV에서 폼에 연결될 때 속도가 훨씬 느립니다. 보기가 지금 내 옵션이 아닙니다 :-( – SeeR

+0

"변경"은 원래 아이디어였던 테이블에 열을 추가하는 것을 의미합니다. 다른 응용 프로그램에서 관리하는 테이블의 구조를 수정하는 것은 분명한 이유 때문에 위험합니다. 뷰를 추가 할 것을 제안했는데, 이는 완전히 새로운 객체이므로 더 안전 할 것이며, 두 번째 데이터베이스에 저장하고 세 부분으로 된 명명법 ('SELECT foo from NAV.dbo.SomeTable')을 사용하면 NAV를 만질 필요가 없다는 것을 의미합니다 전혀 데이터베이스. – Pondlife