是否可以更新information_schema表以将前导文本添加到列名?

Let*_*rus 2 mysql sql

我试图以根用户身份执行此SQL:

UPDATE information_schema.COLUMNS SET COLUMN_NAME = CONCAT('emp',COLUMN_NAME)  WHERE TABLE_SCHEMA = 'edsdb'
Run Code Online (Sandbox Code Playgroud)

但是出现以下错误:

SQL Error [1044] [42000]: Access denied for user 'root'@'localhost' to database 'information_schema'
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user 'root'@'localhost' to database 'information_schema'
Run Code Online (Sandbox Code Playgroud)

我需要“固定”列名的这些表中有很多列。是否可以直接在SQL中执行此操作?

Dar*_*hta 6

根据MySQL文档(在此处),information_schema包含只读表,views因此您不能更改它:

INFORMATION_SCHEMA数据库包含几个只读表。它们实际上是视图,而不是基表,因此没有与它们关联的文件,并且您不能在它们上设置触发器。另外,没有使用该名称的数据库目录。

您需要使用ALTER TABLE命令来代替,例如:

ALTER TABLE `edsdb` CHANGE `id` `empid` INT;
Run Code Online (Sandbox Code Playgroud)