我正在尝试运行此查询以屏蔽“音频”列中的内容,但会不断收到错误消息,提示语法错误
ALTER TABLE测试
ALTER COLUMN音频varchar(10)屏蔽为(FUNCTION ='default()');
我在哪里错了。请帮助
答案 0 :(得分:1)
MySQL不支持Dynamic Data Masking的MASKED WITH
语法。这是Microsoft SQL Server的专有功能。
Microsoft SQL Server是与MySQL不同的RDBMS产品。这两种产品都具有彼此不支持的功能和语法。
在MySQL 5.7中,DEFAULT
可以是常数标量值,也可以是NULL或CURRENT_TIMESTAMP。这些是唯一的选项(请参见https://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html)。
在MySQL 8.0中,您现在可以将常量表达式用作列的默认值(请参见https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html)。
在两个版本中,您都必须使用DEFAULT
关键字。
发表评论:
还有其他方法,我可以为根用户以外的其他用户隐藏此列数据
您可以定义一个VIEW,其中不包括您要隐藏的列。该视图可以读取基本表,但不能选择audio
列。用户可以读取视图,但不能向所有用户授予对基表的访问权限。
MySQL支持授予column-level privileges,但我从未见过有人使用它们,而且我不知道它们是否真的起作用。