2017-10-13 97 views
1

我在Linux下使用MySQL 5.6。如何处理INSERT,但拒绝更新MySQL中的某些列?

我有一个3列(COLUMN1,COLUMN2和COLUMN3)的表,其中COLUMN3是包含确认信息Y或N(默认为N)的1字符列。

我想实现一个简单的制造商检查机制。

我希望STOCKING部门的工作人员具有INSERT权限以添加新记录。然后,他们可以输入COLUMN1和COLUMN2。他们不应该改变COLUMN3的值。

然后,财务部门人员会对栏3 UPDATE权限从N个更新为Y.

然而,我发现,一旦插入新记录,放养的工作人员可以更新栏3。其实,我不希望他们能够改变它。在插入后它仍应该使用默认值N.

在我看来,一旦插入新记录,用户就可以对新记录的每一列执行所有操作。

在这种情况下,MySQL中的REVOKE动作无能为力。

看起来像MySQL中没有DENY UPDATE机制。

有没有人有类似的经验,并分享如何做到这一点?

在此先感谢

+0

这应该在前端执行。用户不应该直接访问数据库。 – serakfalcon

回答

1

你可能已经知道GRANT声明。既然你没有谈到你如何'授予'你的部门的特权,我假设你可能会提供完整的数据库特权。

有许多特权您可以使用GRANT语句,如数据库权限分配,列权限等您的需求表明,你需要分配哪些可以做列权限如下:

GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost'; 

这只会给向用户插入权限并不更新。

+0

谢谢,它的工作原理! –

+0

您的欢迎:) –