我正在使用Visual Web Developer创建一个表单来更新我的数据库。目前,我根据查询SQL 2008数据库中的视图的两个下拉列表填充gridview。这工作正常,但我不能直接更新视图,所以我需要做的是更新支持视图的主表。所以这是问题。我可以使用
的select语句吗?SELECT * FROM [vw_GridviewSource] WHERE (([Annotation Date] = @Annotation_Date) AND ([Name] = @Name))
并对另一个表进行更新吗?
我也能以某种方式仅允许用户更新某些字段而不是其他字段吗?我有一个实例,其中“注释编号”实际上是由我的客户生成的,不应该更改,但我希望它们能够更新注释,业务单位等。
答案 0 :(得分:0)
我很难理解你的问题。
我也可以某种方式只允许用户更新某些字段和 不是其他人?
简短回答是的。下面的示例在Name列上授予UPDATE,在UserN7的GroupNode列上拒绝UPDATE。
GRANT SELECT ON dbo.Department TO User007;
GRANT UPDATE (Name) ON dbo.Department TO User007;
DENY UPDATE (OrganizationNode) ON dbo.Department TO User007;
GO
现在您可以使用此用户进行连接并执行以下语句:
PRINT 'SELECT >';
SELECT *
FROM dbo.Department;
PRINT 'UPDATE #1 >';
UPDATE dbo.Department
SET Name = NULL;
PRINT 'UPDATE #2 >';
UPDATE dbo.Department
SET OrganizationNode = NULL;
PRINT 'End of Test';
GO
结果:
SELECT >
DepartmentID Name OrganizationNode
------------ -------------------------------------------------- ------------------------------------------------------------
UPDATE #1 >
UPDATE #2 >
Msg 230, Level 14, State 1, Line 13
The UPDATE permission was denied on the column 'OrganizationNode' of the object 'Department", database 'Test', schema 'dbo'.