【问题标题】:using trigger to update another database's table on same server使用触发器更新同一服务器上另一个数据库的表
【发布时间】:2019-03-23 01:43:06
【问题描述】:

每当在 db1.sales 中使用触发器插入事件时,我都会尝试在 db2.inventory 中插入记录。

 DROP TRIGGER IF EXISTS `insertintodb2`;
 CREATE DEFINER=`root`@`localhost`
 TRIGGER `insertintodb2` AFTER INSERT ON `sales`
 FOR EACH ROW 
 INSERT INTO `db2.dbo.inventory` (ID) VALUES (0);

它给了我错误

db1.db2.dbo.inventory 不存在。

我怎样才能使这项工作。 谢谢你

【问题讨论】:

  • 去掉最后一行代码的引号。
  • 试过它给出了语法错误。
  • 也尝试删除 .dbo
  • 它给了我错误。它会自动将 db1 添加到其中。
  • 删除引号和 .dbo 你试过了吗?

标签: mysql triggers mariadb


【解决方案1】:

MySQL 和 MariaDB 不使用 .dbo. 语法。只有数据库(又名架构)名称和表名:

db2.inventory

`db2`.`inventory`

(在这种情况下,是否存在反引号无关紧要。)

【讨论】:

  • @Nilay_ - 请注意,我有 4 个反引号,而不是 2 个。请更新您的问题以显示没有 dbo 的测试用例以及确切的错误消息。
【解决方案2】:

如您所见,here 引号(反引号)用于标识对象名称,但您必须在每个对象上使用它们:

`db2`.`dbo`.`inventory`

如果对象名称没有误导性,则不使用它们:

db2.dbo.inventory

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多