【发布时间】:2019-04-27 07:35:50
【问题描述】:
这是代码
CREATE TABLE `church` (
`ID` int(10) UNSIGNED NOT NULL,
`StudentID` int(11) NOT NULL,
`semesterID` int(11) NOT NULL,
`attendedWed` int(11) NOT NULL,
`attendedFri` int(11) NOT NULL,
`attendedSabM` int(11) NOT NULL,
`attendedSabE` int(11) NOT NULL,
`ChurchScore` double(10,2) GENERATED ALWAYS AS ((((((`attendedWed` + `attendedFri`) + `attendedSabM`) + `attendedSabE`) * 100) / 60)) STORED
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
这是错误
操作失败:将 SQL 脚本应用到 数据库。执行:ALTER TABLE
citizenshipgroup3.church更改列ChurchScoreChurchScoreDOUBLE(10,2) NULL DEFAULTattendedWed;ERROR 1064:您的 SQL 语法有错误;检查手册 对应于正确语法的 MariaDB 服务器版本 在第 2 行 SQL 语句的“
attendedWed”附近使用:ALTER TABLEcitizenshipgroup3.church更改列ChurchScoreChurchScoreDOUBLE(10,2) NULL DEFAULTattendedWed
【问题讨论】:
-
什么存储过程,什么alter语句?
-
DEFAULT attendedWed- 我怀疑您是否可以将一列的默认值定义为另一列。 编辑:实际上它是允许的,但仅适用于 MySQL 版本 >= 8.0.13(确实是特定补丁)。参考:dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html -
不懂@Madhur Bhaiya
-
所以我应该更新工作台,它可能会工作吗?
-
@MykeWolf Workbench 只是一个客户端界面。您需要将 MySQL 服务器更新到最新版本。但是从您的错误消息来看,我认为您使用的不是 MySQL,而是 MariaDB。我不确定 MariaDB 是否支持将表达式作为默认列值。
标签: mysql sql mariadb mysql-workbench