-1

我正在使用 Visual Web Developer 创建一个更新我的数据库的表单。目前,我根据查询 SQL 2008 数据库中的视图的两个下拉列表填充网格视图。这工作正常,但我不能直接更新视图,所以我需要做的是更新支持视图的主表。所以这是问题。我可以有一个选择语句说

SELECT * FROM [vw_GridviewSource] WHERE (([Annotation Date] = @Annotation_Date) AND ([Name] = @Name))

并更新另一个表?

我也可以以某种方式只允许用户更新某些字段而不是其他字段吗?我有一个实例,其中“注释编号”实际上是由我的客户生成的,不应更改,但我确实希望他们能够更新注释、业务部门等。

4

1 回答 1

0

我很难理解你的问题。

我也可以以某种方式只允许用户更新某些字段而不是其他字段吗?

简短的回答是的。以下示例在 User007 的 Name 列上授予 UPDATE 并在 OrganizationNode 列上拒绝 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'.
于 2013-08-26T18:32:50.120 回答