Powiedzmy mam następującą tabelę:Jak ustalić, czy kolumna widoku jest wyprowadzona czy stała?
create table t_Item (
ItemID int not null identity(1,1) constraint PK_Item primary key,
Description varchar(256) not null,
Price decimal(10,2) not null
)
i następujący widok:
create view Item as
select ItemID
,Description
,Price
,1.09 Tax
,Price * 1.09 TaxedPrice
from t_Item
TaxedPrice
jest kolumna pochodzi i Tax
jest stała kolumna.
Dlatego nie mogę wstawić ani zaktualizować żadnego z nich. Pierwsze następne zapytanie przejdzie, podczas gdy inne zakończy się niepowodzeniem z błędem.
insert into Item (Description, Price) values ('Test item', 14.00)
insert into Item (Description, Price, TaxedPrice) values ('Test item', 14.00, 15.26)
insert into Item (Description, Price, Tax) values ('Test item', 14.00, 1.09)
I tu jest zwracany komunikat o błędzie:
Update lub wkładka widzenia lub funkcja „Pozycja” nie powiodło się, ponieważ zawiera pole pochodzącą lub stałą.
Czy istnieje sposób, być może z widokami systemu, aby wyświetlić kolumny widoku, które nie mogą być aktualizowane?
Nie wiem. Spodziewałbym się 'is_computed' w' sys.columns', aby to pokazać, ale nie wygląda na widok i nie widzę niczego w ['COLUMNPROPERTY'] (http://msdn.microsoft.com/en- us/library/ms174968.aspx). –
'is_computed' to również moje pierwsze przypuszczenie, ale [definicja Microsoftu] (http://msdn.microsoft.com/en-us/library/ms191250 (v = SQL.105) .aspx) to: ' Obliczona kolumna jest obliczane na podstawie wyrażenia, które może korzystać z innych kolumn w tej samej tabeli. "Tutaj tak nie jest, ponieważ kolumna widoku używa kolumny z tabeli podstawowej, a nie z samego widoku. – madprog