MySQL 触发器将列设置为 max + 1 不起作用

2024-01-11

我在编写一个触发器来将一组用户 ID 的排名列设置为最大排名值加 1 时遇到困难。也许代码比我的描述更有帮助:

CREATE TABLE `saved_listing` (
  `saved_listing_id` int(10) NOT NULL auto_increment,
  `user_id` int(10) NOT NULL default '0',
  `listing_id` int(10) NOT NULL default '0',
  `listing_ty` varchar(10) NOT NULL default '',
  `notes` text NULL,
  `rank` int(10) NOT NULL default '0',
  `modify_by` int(10) NOT NULL default '1',
  `modify_dt` timestamp NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `create_by` int(10) NOT NULL default '1',
  `create_dt` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` enum('Yes','No') NOT NULL default 'No',
  PRIMARY KEY  (`saved_listing_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

这是我的触发代码:

CREATE TRIGGER ins_saved_listing BEFORE INSERT ON saved_listing
FOR EACH ROW BEGIN
    SET NEW.create_dt = NOW();
    SET NEW.rank = (SELECT MAX(rank) + 1 FROM saved_listing WHERE user_id = NEW.user_id);
END

这是我收到的错误消息:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 3 行 '' 附近使用的正确语法

任何帮助将不胜感激。我没有太多编写触发器的经验。

MySQL服务器版本:5.1.49-3~bpo50+1


那是因为 mysql 看到;(分隔符)并中断执行CREATE TRIGGER

尝试更改为:

delimiter |


CREATE TRIGGER ins_saved_listing BEFORE INSERT ON saved_listing
FOR EACH ROW BEGIN
    SET NEW.create_dt = NOW();
    SET NEW.rank = (SELECT MAX(rank) + 1 FROM saved_listing WHERE user_id = NEW.user_id);
END;

|

delimiter ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 触发器将列设置为 max + 1 不起作用 的相关文章

随机推荐

  • undefined 不是一个对象(评估 'RNGestureHandlerModule.State'

    我已经安装了反应导航 in my 反应本机项目 它是一个入门项目 没有任何代码 但是在运行项目时我遇到了这样的错误 这是我的导航代码 import createStackNavigator from react navigation imp
  • 在 C/C++ 中以 O(1) 时间初始化动态数组

    有没有办法在 O 1 时间内初始化整个动态数组 有没有类似的东西bool a 10 false 在静态数组的情况下 对于动态数组 要设置的每个元素都必须由CPU单独考虑 因此时间复杂度为O N 或者是吗 但这并不是 big oh 真正的工作
  • 尝试通过玩家输入使用 tkinter 使对象在网格中移动

    所以我正在 tkinter 而不是 pygame 中开发一个类似地下城爬行者的游戏 我发现这非常困难 因为网格无法在代码中工作 并且我找不到在画布上创建可通过按键输入移动的形状的方法 我已经尝试了多种修复方法 但无法找到一种方法将所有这些都
  • 与“docker run -d”等效的远程 api 命令是什么?

    我正在尝试通过远程 api 调用 docker 命令 Docker 远程 api 似乎没有 分离模式 选项 http docs docker io en latest commandline command run http docs do
  • LinQ 查询多个表并提取数据

    我正在对 4 个表进行内连接查询 我必须提取数据并转换为字符串并将其放入数组中 var query from a in context as join b in context bs on a prikey equals b forkey
  • 如何连接数组列表中的字符串值

    我需要使用 concat 一次打印所有数组列表值 这是我的代码 ArrayList
  • git merge 不创建合并提交,没有 MERGE_HEAD [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 在 Linux 上使用 Git 1 8 1 2 我一直在基于以下两个不同的分支上工作master并行 称为 A 和 B 并且还创建
  • 是什么导致 pyspark 中的“unicode”对象没有属性“toordinal”?

    我收到此错误 但我不知道是什么原因造成的 我的 python 代码在 pyspark 中运行 堆栈跟踪很长 我只显示其中的一些 所有堆栈跟踪都没有显示我的代码 所以我不知道在哪里寻找 导致此错误的可能原因是什么 usr hdp 2 4 2
  • 什么是 GWT 字节缓存文件?

    作为背景 今天我的 GWT 托管模式运行速度神秘地减慢到几乎无法工作的程度 每当我暂停应用程序时 相关线程 主线程 代码服务器等 都会等待某些文件 I O 本机方法 挠头一阵子后 我尝试清理一下我的硬盘 然后我刚刚在我的用户中发现Temp文
  • 在 Mac OS 上安装 Rails 失败并出现多个错误

    我尝试在 Mac OS v10 10 4 系统上安装 Rails 但运行时失败brew install rbenv ruby build 错误是 Error Permission denied usr local etc openssl W
  • PRNG 需要线程安全吗?

    只要并发调用不会导致 seg v 或返回相同的值 就有什么理由可以防止竞争条件和数据损坏PRNGs http en wikipedia org wiki Pseudorandom number generator当这些错误的主要影响是不可预
  • 如何在不删除约束的情况下从表中删除

    我有一个问题 我需要在不删除或暂停约束的情况下删除信息 问题是否允许放弃约束很简单 但是我可以将值从 NULL 更改为 NOT NULL DELETE FROM SUPPLIER WHERE COUNTRY USA 然而 另一个表 PROD
  • 方向改变时片段 Backstack 不会恢复

    我有一个FragmentActivity 当用户浏览应用程序时 我将当前片段替换为用户选择的片段 并将事务添加到后台堆栈 一切正常 用户可以通过按后退按钮返回到之前的片段 当设备方向改变时就会出现问题 假设用户看到的第一个片段是 A 然后他
  • 使用最小起订量模拟静态类

    我正在 NUnit 的帮助下编写单元测试用例 并且有一些静态类需要模拟来运行测试用例 所以我们可以在以下帮助下模拟静态类吗MOQ模拟框架 如果有人有想法 请提出建议 有两种方法可以实现这一点 正如 PSGuy 所说 您可以创建一个代码可以依
  • Google Delegates 讨论日历框架/EventKit

    我一直假设 Google 代表可以通过 iCal 和 calendar app 查看 但我们开发人员无法通过日历框架或 EventKit 看到 这有改变吗 我也有这个问题 日历出现两次 取消选择代表 过了一会儿 一切都消失了 显然这是谷歌方
  • 如何检测服务器是否正在使用 SPDY

    有什么方法可以检测远程网站是否支持 SPDY 以及它是什么版本 我可以从命令行使用一些东西 比如 bash 脚本 尝试使用curl发送自定义用户代理标头 但无法获得任何对我有帮助的响应标头 这个想法是能够为任何域获取 SPDY true f
  • c# text/winForm 覆盖视频游戏,如 xfire、PIX、steam、fraps 等

    我知道有很多关于这个主题的帖子 但是几个月来我一直在寻找解决方案 我在谷歌上查了大约 300 个关于这个的帖子 我发现的唯一好的东西是一个 C 程序 它在 League 的窗口上绘制了一个彩色矩形 我对directx不是很熟悉 我的程序是用
  • 在 Python 中训练后,神经网络没有给出预期的输出

    我的神经网络在 Python 训练后没有给出预期的输出 代码有错误吗 有什么方法可以减少均方误差 MSE 吗 我尝试重复训练 运行程序 网络 但它没有学习 而是给出相同的 MSE 和输出 这是我使用的数据 https drive googl
  • 阻止内核处理绑定到原始套接字的 TCP 段

    根据http linux die net man 7 raw http linux die net man 7 raw raw socket socket AF INET SOCK RAW int protocol 是创建原始套接字的方法
  • MySQL 触发器将列设置为 max + 1 不起作用

    我在编写一个触发器来将一组用户 ID 的排名列设置为最大排名值加 1 时遇到困难 也许代码比我的描述更有帮助 CREATE TABLE saved listing saved listing id int 10 NOT NULL auto