Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 限制更新列_Sql_Sql Server - Fatal编程技术网

Sql 限制更新列

Sql 限制更新列,sql,sql-server,Sql,Sql Server,是否可以限制在不使用触发器的情况下更新SQL中的列?如果是,怎么做?需要查询吗 附言: 我是说,我有一张桌子 CREATE TABLE MYBUDGET.tbl_Income ( [IncomeID] INT NOT NULL IDENTITY(1,1), [IncomeCatID] INT NOT NULL, [IncomeAmnt] MONEY NOT NU

是否可以限制在不使用触发器的情况下更新SQL中的列?如果是,怎么做?需要查询吗

附言:

我是说,我有一张桌子

CREATE TABLE MYBUDGET.tbl_Income
(
    [IncomeID]          INT             NOT NULL IDENTITY(1,1),
    [IncomeCatID]       INT             NOT NULL,
    [IncomeAmnt]        MONEY           NOT NULL,
    [IncomeCurrencyID]  INT             NOT NULL,
    [ExchangeRateID]    INT             NOT NULL,
    [IncomeAmnt_LKR]    MONEY           NOT NULL,
    [AddedOn]           DATETIME        NOT NULL,
    [Remark]            VARCHAR(250),
)

我需要允许用户只更新[ExchangeRateID]和[IncomeAmnt_LKR]字段。无法更新所有其他字段。仅插入。

使用表创建视图并隐藏所需的列..并向用户授予访问该视图的权限

CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

使用表创建一个视图并隐藏所需的列..并向用户授予访问该视图的权限

CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

从该表创建一个视图,然后隐藏所需的列,同时允许用户访问该视图

从该表创建一个视图,然后隐藏所需的列,同时允许用户访问该视图

用于阻止更新。e、 g

DENY UPDATE ON

MYBUDGET.tbl_Income
(
    [IncomeID],
    [IncomeCatID],
    [IncomeAmnt]        ,
    [IncomeCurrencyID]  ,
    [AddedOn]           ,
    [Remark]
)
TO Mary, John, [Corporate\SomeUserGroup]

仍应考虑所有权链接如何超越DunyEng/P>>P>用于块更新。e、 g

DENY UPDATE ON

MYBUDGET.tbl_Income
(
    [IncomeID],
    [IncomeCatID],
    [IncomeAmnt]        ,
    [IncomeCurrencyID]  ,
    [AddedOn]           ,
    [Remark]
)
TO Mary, John, [Corporate\SomeUserGroup]

仍应考虑所有权链接如何超越DysYEng/P>< P>这是权限。

根据康拉德·弗里克斯的回答,你拒绝更新专栏

但是,db_owner/dbo和sysadmin/sa将忽略这些内容,因此您需要确保权限模型是正确的

如果您有写入表的视图或存储过程,那么如果相同的DB用户同时拥有代码和表,则也不会检查权限。这被称为

我提到这一切是因为两天前还有一个问题


如果基于权限的方法失败了,并且您不能/不会更改它,那么您需要使用触发器,它归结为权限

根据康拉德·弗里克斯的回答,你拒绝更新专栏

但是,db_owner/dbo和sysadmin/sa将忽略这些内容,因此您需要确保权限模型是正确的

如果您有写入表的视图或存储过程,那么如果相同的DB用户同时拥有代码和表,则也不会检查权限。这被称为

我提到这一切是因为两天前还有一个问题


如果基于权限的方法失败,并且您不能/不会更改它,那么您需要使用触发器

如何限制?禁止更新,或者限制为一组值?如何限制?禁止更新,或者限制为一组值?这不会阻止授权用户更新基础表中的列,它只是阻止未授权用户查看这些列。这不会阻止授权用户更新基础表中的列,它只是阻止未经授权的用户查看这些列。根据另一个建议视图的答案,这并不阻止授权用户更新基础表中的列,这是OP想要阻止的。根据另一个建议视图的答案,这不会阻止授权用户更新基础表中的列,这是OP想要阻止的。如果方法处于触发器中,这将是正确的答案!如果进近处于触发状态,这将是正确答案!