2013-05-20 5 views
8

Пытался найти ответ на этот вопрос, но не смог.Можно ли обновить существующую строку в БД, используя Liquibase?

Так, например, у меня есть эта таблица:

ТАБЛИЦА:

col1 | col2 
123  0 
124  1 

и я хочу, чтобы изменить Col2 значение 1, и это, как я пытаюсь сделать это:

<changeSet author="myName" id="7799"> 
     <sql> 
     UPDATE TABLENAME; 
     SET COL1='1' WHERE col1='123'; 
     </sql> 
</changeSet> 

Увы, он не работает. Поэтому мне было интересно, возможно ли это сделать с липибазой? Поскольку большинство тегов в документации должны делать с созданием таблицы, добавление колонок и т.д.

+1

';' После 'tablename' ошибочно. ';' Завершает ** оператор ** не одну строку. И в следующий раз укажите сообщение об ошибке. «* не работает *» вообще не помогает (если только ошибка не является *, что * очевидно) –

+1

Здравствуйте, спасибо за ответ. Я пробовал; и без; -> тот же результат. Теперь, мне жаль, что у меня не появилось сообщение об ошибке, потому что тогда я, по крайней мере, знал бы, что происходит не так, но приложение выполняется без каких-либо ошибок, предупреждений или исключений. Просто изменение, которое я хочу сделать в базе данных, не делает. – user2187935

+0

Вы уверены, что набор изменений был выполнен против вашей базы данных? Например, если вы запустили команду «changelogSync», это означало бы изменения в записях в вашей базе данных без фактического запуска SQL-операторов. Впоследствии работающая жидкостная система не будет выполнять набор изменений, который помечен как ранее выполненный. –

ответ

17

Вы можете использовать следующий синтаксис LiquiBase обновить:

<changeSet author="myname" id="7799"> 
    <update catalogName="dbname" 
      schemaName="public" 
      tableName="TABLENAME"> 
     <column name="COL1" value='1' type="varchar(50)"/> 
     <where>col1='123'</where> 
    </update> 
</changeSet> 

Для других вариантов, пожалуйста, проверьте Liquibase Update

+0

HEllo Я не вижу никаких тегов '' в документации, а скорее ''. Я не вижу эквивалентности 'SET COLUMN = Columnnewvalue', все, что я вижу, где находится' UPDATE TABLENAME, где col1 = '123''. Исправьте меня, если я ошибаюсь. спасибо –

+0

Возможно опечатка. Я обновил ответ. –

Смежные вопросы