Расширенная модификация базы данных «скрипт» - как это сделать - PullRequest
0 голосов
/ 09 декабря 2010

Я должен пройти через базу данных и изменить ее в соответствии с логикой. Проблема выглядит примерно так. У меня есть таблица истории в моей базе данных, и я должен изменить. Прежде чем что-то изменить, я должен посмотреть, было ли у объекта (у которого есть несколько строк в таблице истории) определенное состояние, скажем, 4 или 9. Если у него было состояние 4 или 9, то я должен проверить строки между текущей найденной строкой. и следующее состояние 4 или 9 ряд. Если такая строка (между этими состояниями) имеет определенное значение в определенном столбце, я делаю что-то в следующей строке. Я надеюсь, что это достаточно просто, чтобы дать вам идею. Я должен сделать эту проверку для всех объектов. Имейте в виду, что любой объект может быть изменен в любом месте его жизненного цикла (конечно, пока он не достигнет конечного состояния).

Я использую SQL Sever 2005 и Hibernate. AFAIK Я не могу сделать такую ​​сложную проверку в Transact SQL! Так что бы вы порекомендовали мне сделать? До сих пор я думал о том, чтобы сделать это как тест JUnit. Это могло бы иметь преимущество в том, что Hibernate помогал мне вносить изменения, и у меня была бы Java для списков и других структур данных, которые мне могут понадобиться и которых нет в SQL. Если я делаю это как тест JUnit, я не теряю свои файлы сопоставления! Мне интересно, какие подходы вы бы использовали?

1 Ответ

0 голосов
/ 09 декабря 2010

Я думаю, вы должны иметь возможность использовать курсоры для управления сложными проверками в SQL Server. Вы не упомянули, как часто вам нужно это делать, но если это разовая вещь, вы можете сделать это на Java или SQL Server, в зависимости от вашего уровня комфорта.

Если эту проверку необходимо применить к каждой операции CRUD, возможно, триггер базы данных - это путь. Если логика со временем может часто меняться, я бы предпочел написать чеки в Hibernate, предполагая, что никто не попадет в базу данных напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...