【问题标题】:How can I delete a stored procedure on a table?如何删除表上的存储过程?
【发布时间】:2012-05-10 13:40:24
【问题描述】:

我有一个表格,我无法复制其中的一行,因为其中一个字段上有一个名为 items.calcPricestored procedure,但已不存在。

这是 MySQL 命令:

INSERT INTO items (folder_id)
VALUES (56)

错误消息说,"Couldn't write row. FUNCTION items.calcPrice does not exist."

如何识别并删除我桌子上的这个stored procedure?我有 2 个具有“价格”值的字段,所以我不确定 procedure 在哪个字段上运行。

【问题讨论】:

  • 请粘贴您正在执行的导致该错误的语句。
  • 我正在使用 mysqlPro,所以我只需要单击一个按钮来创建一个新行,但请给我一秒钟使用 SQL 命令重现...
  • 该表上是否有任何插入前/后触发器? SHOW TRIGGERS WHERE Event = 'INSERT' AND Table = 'mytable'?
  • 嗯,它的说法,SHOW TRIGGERS WHERE Event = 'INSERT' AND Table = 'mytable' 不是正确的语法,是 MySQL 兼容吗?
  • 对不起那些阅读这个帖子的人,它不是 mysqlPro,而是 Sequel Pro

标签: mysql sql stored-procedures triggers sequelpro


【解决方案1】:

根据我们在聊天中的讨论,您似乎在此表上定义了一个名为 Items_TriggerBEFORE INSERT 触发器,它试图调用您的问题所指的函数。

删除触发器:

DROP TRIGGER Items_Trigger;

【讨论】:

  • 在您知道触发器存在的原因之前不要删除它们。
  • @HLGEM:同意——在这种情况下,我们在聊天中提到了这一点:“我可以删除所有这些我不再需要的东西”,然后进一步提示,“这是我们不再需要的旧逻辑”。
  • 我只是想让未来的读者知道,如果您不知道不再需要触发器,这是一种危险的做法。
  • @HLGEM 感谢您的关注。这些是我们不再使用的非常古老的规则。感谢您对未来读者的注意。
猜你喜欢
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 2014-01-10
相关资源
最近更新 更多