从一个数据源中选择另一个更新

时间:2013-08-26 18:03:40

标签: sql-server-2008 visual-web-developer

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

的select语句吗?
SELECT * FROM [vw_GridviewSource] WHERE (([Annotation Date] = @Annotation_Date) AND ([Name] = @Name))

并对另一个表进行更新吗?

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

1 个答案:

答案 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'.