你可以做這些方針的東西,如果用戶識別下來在數據庫級別:
你創建你平常表以及表包含用戶自定義:
create table dbo.T (
ID varchar(19) not null primary key,
PropertySize int not null
)
go
create table dbo.T_User (
ID varchar(19) not null,
[User] sysname not null,
PropertySize int null
)
然後,您創建,通過它的所有交互現在應該會出現一個視圖,而不是表:
然後一對夫婦觸發s到確保一切得到適當的維護:
create trigger T_V_I on dbo.V instead of insert
as
insert into dbo.T (ID,PropertySize) select ID,PropertySize from inserted
go
create trigger T_V_U on dbo.V instead of update
as
merge into dbo.T_User u
using inserted s
on u.ID = s.ID
when matched then update set PropertySize= s.PropertySize
when not matched then insert (ID,[User],PropertySize) values (s.ID,SUSER_NAME(),s.PropertySize);
所以基本上,每一個用戶自定義保存爲獨立的行和基表中包含的「默認」值,用戶將看到,除非他們已經應用了定製。
根據正在使用的認證選項,SUSER_NAME
可能不是正確的功能,但其他各種USER
函數之一將會是。
這是唯一的方法,或者我們可以做一些其他方式而不是觸發器? –