2011-03-22 58 views
1

我有两个数据库。像编辑,插入到其中的变化也需要对第二个进行更改,反之亦然。可以用Java编写MySQL触发器或存储过程吗?

其实,一个数据库是一个古老的传统数据库(一个非常糟糕的实体关系结构),目前用户使用的旧版应用程序前端。 第二个数据库是一个新构建的,更好的重构遗留与一个单独的应用程序。前端。

我想这两个应用(访问所述传统和分别新数据库)同时运行,因此用户可以同时使用的应用程序和改变在一个应用程序的选项越过另一个是可见的。

我希望编写调用存储过程,它重组的数据,并把它放在对面的数据库触发器。

我的问题是:

  • 是我执行的路线,因为它应该是什么?我的意思是,triggers >call> stored procedures >call> database.
  • 可以使用Java编写触发器/存储过程吗?
  • 有什么好的/推荐的技巧,教程等在那里?

上有许多谷歌的链接,但他们都不是有用的。我想知道MySQL和Java在MySQL触发器方面是否一起工作?有没有可能?有没有更好的方法来实现我所需要的?

回答

2

触发器是命名数据库对象。他们定义了某些与数据库相关的事件发生时数据库应该采取的行动。它们是用SQL编写的。它们的执行对用户来说是透明的。像往常一样编写Java JDBC代码,DBMS将在必要时自动执行适当的触发器。

mysql> delimiter // 
mysql> CREATE TRIGGER insert_trigger BEFORE INSERT ON Customer 
    -> FOR EACH ROW 
    -> BEGIN 
    -> UPDATE Customer SET Price=Price-10 WHERE CustomerGroup=32 and CityCode=11; 
    -> END; 
    -> // 

This例子展示了如何让自己的触发写入到另一个数据库。请注意自动增量属性。

我想你应该忘记在MySQL Java存储过程,但你总是可以将业务逻辑移动到您自己的Java程序。

+2

我相信你至少在Oracle中仍然可以从存储过程和触发器中调用一些Java代码。不确定关于MySQL。 – 2011-03-22 14:12:01

+0

你说得对。在Oracle中,您可以编写Java存储过程并通过触发器事件调用它们。尽管这在MySQL中不起作用。 – 2011-03-22 15:50:18

相关问题