这是代码
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
更改列
ChurchScore
ChurchScore
DOUBLE(10,2)NULL DEFAULTattendedWed
;错误1064:您的SQL语法有错误。查看手册
对应于您的MariaDB服务器版本的正确语法
在第2行SQL语句“ ALTER TABLE”附近的“
attendedWed
”附近使用citizenshipgroup3
。church
更改列ChurchScore
ChurchScore
DOUBLE(10,2)空默认值attendedWed
最佳答案
您的语法很好。问题是MySQL直到5.7才支持生成的列。您大概正在使用早期版本。
可能最简单的解决方案是使用视图进行计算。
关于mysql - 生成的存储过程失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53467871/