【问题标题】:Advanced database modification "script" - how to do it高级数据库修改“脚本”——怎么做
【发布时间】:2010-12-09 15:14:27
【问题描述】:

我必须通过数据库并根据逻辑对其进行修改。问题看起来像这样。我的数据库中有一个历史表,我必须修改。 在修改任何内容之前,我必须查看一个对象(在历史表中有几行)是否具有某种状态,例如 4 或 9。如果它具有状态 4 或 9,那么我必须检查当前找到的行之间的行和下一个状态 4 或 9 行。如果这样的行(在这些状态之间)在特定列中具有特定值,那么我在下一行中执行某些操作。我希望这很简单,可以给你一个想法。我必须对所有对象进行此检查。请记住,任何对象都可以在其生命周期的任何地方进行修改(当然,直到它达到最终状态)。

我正在使用 SQL Sever 2005 和 Hibernate。 AFAIK 我无法在 Transact SQL 中进行如此复杂的检查!那么你会建议我做什么?到目前为止,我一直在考虑将其作为 JUnit 测试。这将具有让 Hibernate 帮助我进行修改的优势,并且我将使用 Java 来处理我可能需要但在 SQL 中不存在的列表和其他数据结构。如果我将其作为 JUnit 测试进行,我不会丢失我的映射文件! 我很好奇你会使用什么方法?

【问题讨论】:

    标签: java database sql-server-2005 hibernate


    【解决方案1】:

    我认为您应该能够使用游标来管理 SQL Server 中的复杂检查。您没有提到您需要多久执行一次,但如果这是一次性的事情,您可以在 Java 或 SQL Server 中执行此操作,具体取决于您的舒适程度。

    如果需要在每个 CRUD 操作上应用此检查,也许数据库触发器是要走的路。如果逻辑可能随着时间的推移频繁变化,我宁愿在 Hibernate 中编写检查,假设没有人会直接访问数据库。

    【讨论】:

    • 我可以在 SQL 中有列表吗?我的意思是我可以在其中存储我的对象 ID 的东西?
    • SQL 中没有列表数据结构,或者至少我不知道,但是您可以创建临时表来保存数据列表,对其进行操作,然后删除临时表。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多