如:
班级表(主表)
班级id 班级名称
1 一年一班
2 一年二班
学生表(副表)
学生id 学生姓名所属班级id
1 张三1
2 李四1
3 王五2
4 赵六2
如果要更改副表中的班级id为1的改为3,那么就无法更改,因为学生表中的所属班级id必须为主表中存在的才可以。
外键:
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。
你使用的是sqlserver数据库么?另外你确信你使用的是数据库管理器而不是软件么?
如果是sqlserver数据库,其实对于某列上不存在不让修改的说法,sqlserver数据库数据控制原理是角色控制,也就是说我们对于某一个角色去下定义,让隶属于这个角色的用户不能够更新数据。或者在某个角色的基础上不分配或是回收对某一列的权限!如果是这种情况,用一个能修改的角度登陆才行。
还有另一种就是所谓的触发器,一旦发现你修改,立即返回原数据,这样你也是永远修改不了的!这时你要找到那个触发器,将触发器删除后再进行修改,然后加回触发器即可!
但这两种情况都是对某一列下的定义(我们称为锁定粒度为列)不可能是某一个单元格!
如果你是站在erp管理的基础上不让你修改那是十分正常的!
在企业管理器中使用图形方式(如二楼给的图)还是语句,则没有任何的区别!
在SQL中能设置一列为只读?这我怎么都不知道?我知道的是在DCL(数据控制)中对于不同的用户可以设置不同的权限,比如说授权某一个用户只读某一个数据库时,那么该用户对些数据库只能是读无法进行插入或是更新 *** 作,也就是说只读数据库的select权限授予该用户,即可达到只读的情况!
当然,我们可以授予某用户在某一列上有select权限,就可能就是你说的那种情况!但如果是这样的情况下,无法更改其数据,包括插入与更新,在SQL数据库中权限授予也是存在一定的安全机制的,用户本身没有权限时,不能给其他用户授予自己不具备的权限,否则会造成该用户拥有这样的权限.比如某用户建立一个用户,而该用户若能授予自己所创建的用户以删除权限,然后再以创建的用户登陆,再授予上级用户以删除权限,这样该用户就可能具备删除权限.所以如果该用户在某一表,列或者库中具备的是只读时,除非使用权限更高的用户去授予该用户权限,否则使用自己打开的链接中是无法实现的,任何语句都不行的!
不知道你所谓的只读是什么意思,但在SQL中,权限的机制不是表,而是用户,在系统表中,用户对某一库表的有什么样的权限都有一个系统表的,除非你能拿到更高级的用户权限,否则不可能有任何办法!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)