无法使用MySQL 5.7中的Default函数更改列

时间:2019-01-10 18:37:15

标签: mysql default

我正在尝试运行此查询以屏蔽“音频”列中的内容,但会不断收到错误消息,提示语法错误

ALTER TABLE测试
ALTER COLUMN音频varchar(10)屏蔽为(FUNCTION ='default()');

我在哪里错了。请帮助

1 个答案:

答案 0 :(得分:1)

MySQL不支持Dynamic Data MaskingMASKED 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,但我从未见过有人使用它们,而且我不知道它们是否真的起作用。