这是代码

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 citizenshipgroup3church
  更改列ChurchScore ChurchScore DOUBLE(10,2)NULL DEFAULT
  attendedWed;
  
  错误1064:您的SQL语法有错误。查看手册
  对应于您的MariaDB服务器版本的正确语法
  在第2行SQL语句“ ALTER TABLE”附近的“ attendedWed”附近使用
  citizenshipgroup3church更改列ChurchScore
  ChurchScore DOUBLE(10,2)空默认值attendedWed

最佳答案

您的语法很好。问题是MySQL直到5.7才支持生成的列。您大概正在使用早期版本。

可能最简单的解决方案是使用视图进行计算。

关于mysql - 生成的存储过程失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53467871/

10-16 15:42
查看更多