mysql - 将默认值更改为mysql中的子查询

标签 mysql database default

我想要做的是,我想更改列属性,并为某个列关联一个默认值,该值来自子查询。基本上 timeOfCreation 的默认值应该是一个子查询--> (select NOW())。但由于某种原因它返回一个语法错误,我不明白。这是我输入的命令。

 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';



ALTER TABLE `horizon`.`articles` CHANGE COLUMN `timeOfCreation` `timeOfCreation` DATETIME NULL DEFAULT (select NOW())  ;



 SQL_MODE=@OLD_SQL_MODE;

    SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

    SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

错误:

Executing SQL script in server

ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(select NOW())' at line 1





ALTER TABLE `horizon`.`articles` CHANGE COLUMN `timeOfCreation` `timeOfCreation` DATETIME NULL DEFAULT (select NOW())  



SQL script execution finished: statements: 3 succeeded, 1 failed

诗。我将工作台用作软件,但我认为这并不重要。

最佳答案

默认值必须是常量,不能是表达式或查询。有一个异常(exception),这恰好是您需要的情况:TIMESTAMP 或 DATETIME 列可以使用 CURRENT_TIMESTAMP 作为其默认值。

ALTER TABLE `horizon`.`articles` MODIFY COLUMN `timeOfCreation` DATETIME NULL DEFAULT CURRENT_TIMESTAMP  ;

关于mysql - 将默认值更改为mysql中的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16295495/

相关文章:

c# - 有什么方法可以使用 Wpf (C#) 更改 Web 浏览器的上下文菜单

python - 在类中设置默认值

php - 使用ajax检索数据库

php - 显示来自 MySQL 的多个值

Mysql交叉矩阵

Php 登录,无法继续 session

mysql - 从 MariaDB 迁移到 MySQL

php - PDO SQL 查询不受限制

sql-server - 用户 'NT AUTHORITY\ANONYMOUS LOGON' 登录失败 - MS SQL Server - 可能无法解决问题

generics - Dart 对几种类型的通用约束并设置默认值