업데이트 : SQL 서버에 문제가없는 것 같습니다. 뷰 내에서 수동으로 데이터베이스 내부의 업데이트 문을 실행하고 Bar 테이블을 업데이트 할 수있었습니다. 문제가 그들에게 있다고 생각하기 때문에 이것을 닫고 OleDbDataAdapters를 더 연구 할 것입니다.다중 테이블보기의 테이블을 업데이트 할 수 있는지 확인하는 방법은 무엇입니까?
이 질문은 MS SQL Server 2000에 적용됩니다. 수정할 수있는 멀티 테이블보기 테이블을 어떻게 결정합니까? 나는 (VB.NET의 OleDbDataAdapters를 사용하여)이 뷰를 업데이트 할 때, 나는 푸의 열, 그러나 바의 열을 업데이트 할 수 있습니다
CREATE VIEW dbo.MyView
AS
SELECT dbo.Foo.Id, dbo.Bar.Id, dbo.Foo.column1, dbo.Foo.column2,
dbo.Foo.column3, dbo.Bar.column1, dbo.Bar.column2,
dbo.Bar.column3
FROM dbo.Bar INNER JOIN
dbo.Foo ON dbo.Bar.Id = dbo.Foo.ForeignId
:
나는 다음 볼 수 있습니다. 이것에 대한 조사를 통해 MS SQL 서버는 테이블 중 하나만 업데이트 할 수 있다는 다중 테이블 뷰에서 알 수 있습니다. 그래서 내 질문은 SQL 서버가 어떤 테이블을 업데이트 할 수 있는지 결정하는 것입니다.
보기에서 특정 행의 필드를 편집하는 테스트를 시도했습니다. 그런 다음 OleDbDataAdapter를 사용하여 뷰를 업데이트했습니다. Foo 테이블에 대한 편집 만 허용되었습니다. Bar 테이블에 대한 편집이 무시되었습니다 (예외가 발생하지 않음).
어떤 테이블을 업데이트 할 수 있는지 또는 어느 테이블을 제어 할 것인지 예측할 수있는 방법이 있습니까? 바가 Foo 대신 업데이트 가능한 테이블이되도록하려면 어떻게해야합니까?
업데이트 : 나는 구글, MS SQL 서버에서 이걸 발견 2000 Unleased :
http://books.google.com/books?id=G2YqBS9CQ0AC&pg=RA1-PA713&lpg=RA1-PA713&dq=ms+sql+server+ "다중 테이블 +보기"++ 업데이트 & 소스 = BL & OTS = ZuQXIlEPbO & SIG = JbgdDe5yU73aSkxh-SLDdtMYZDs & HL = EN & EI = B-0SSq-aHZOitgPB38zgDQ & 사 = X & ㅅ = book_result & CT = & resnum = 1 # PRA1-PA713, M1 결과
(URL이 나는 작동하지 않습니다 붙여 넣기하기 위해 노력하고있어 몇 가지 이유 이 사이트, 소아 당신이 & 붙여 넣기를 복사해야 Y)
말한다.
- 이상 하나 기본 기본 테이블에 영향을 미치지 수있는 멀티 테이블보기를 통해 업데이트.
- 다중 테이블보기에 대해 삭제를 실행할 수 없습니다.
그러나 아직 내 질문에 대한 답변을 볼 수 없습니다.
다시 말하지만, 내 질문은 :
어떻게 결정합니까 수정할 수있는 다중 테이블보기의 어떤 테이블?
각 테이블마다 두 개의 업데이트 문을 쓸 수 있다는 것을 알고 있습니다. 내 관심사가 다르다. 위와 같은보기를 사용하는 코드를 감사해야하며보기에 대한 업데이트를 수행해야합니다.업데이트의 어느 부분이 자동으로 무시 될지 결정하는 방법을 찾고 싶었습니다.
예 :
내가 Bar.Column1을 편집 한 후 위해 OleDbDataAdapter의 업데이트() 메서드를 호출합니다. 이로 인해 Bar 테이블이 수정되거나 예외가 throw되지 않습니다. Foo.Column2를 편집 한 다음 Update()를 호출하면 Foo 테이블이 수정됩니다.
Bar를 업데이트하려고 할 때 동시에 Foo를 업데이트하고 있습니까? – JeffO
OleDbDataAdapter를 사용하기 때문에 데이터베이스에 입력되는 정확한 SQL 구문을 알 수 없습니다. 데이터 어댑터는 뷰에서 직접 데이터를 가져 오므로 개별 테이블이 아닌 뷰를 업데이트한다고 가정했습니다. 내가 어떻게 확인할 수 있는지 아십니까? –
뷰를 업데이트하면 기본 테이블이 업데이트된다는 사실을 알고 있어야합니다. 뷰 자체가 어떤 데이터도 보유하지 않는다는 것을 알게됩니다. 그것이 내가 쓴 것에 혼란스러워하면 죄송합니다! –