0

私がしたいのは、列のプロパティを変更し、特定の列のデフォルト値を関連付けたいということです。この値はサブクエリから取得されます。基本的に、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

Ps。ソフトはworkbenchを使っていますが、問題ないと思います。

4

1 に答える 1

2

デフォルト値は定数でなければならず、式やクエリにすることはできません。例外が 1 つあります。これはたまたま必要な場合です。TIMESTAMP または DATETIME 列をCURRENT_TIMESTAMPデフォルト値として使用できます。

ALTER TABLE `horizon`.`articles` MODIFY COLUMN `timeOfCreation` DATETIME NULL DEFAULT CURRENT_TIMESTAMP  ;
于 2013-04-30T08:42:24.100 に答える