Liquibase изменить существующее обнуляемое ограничение с истинного на ложное

Я добавил столбец в существующую таблицу, используя список изменений Liquibase, и установил для ограничения nullable значение true.

Код:

<changeSet id="10" author="000000">
    <addColumn tableName="NCV_ATTRIBUTE">
        <column name="AlternativeListPrice" type="double" defaultValue="0.0">
        <constraints nullable="true"/>
        </column>
    </addColumn>
</changeSet>

Я хочу изменить ограничение nullable с true на false в наборе изменений 11. Какой самый простой способ добиться этого?

Благодарю.

4 ответа

Я нашел точный метод для использования здесь.

Вот как можно удалить ограничение Nullable, используя changelog:

<changeSet id="11" author="000000">
    <dropNotNullConstraint tableName="NCV_ATTRIBUTE" columnName="AlternativeListPrice" columnDataType="double"/>
</changeSet>

Ключевое слово "dropNotNullConstraint".

В этом примере, если вы используете это ключевое слово, за которым следуют имя таблицы и имя столбца, вы сможете удалить ранее установленное ограничение обнуляемости, и значение обнуляемости будет изменено на false.

Чтобы запустить набор изменений только после того, как убедитесь, что ограничение существует (в oracle) -

<changeSet id="111" author="ME">
  <preConditions onFail="MARK_RAN" onError="CONTINUE">
    <sqlCheck expectedResult="N">
      SELECT Nullable
      FROM user_tab_columns
      WHERE table_name = 'table_name'
      AND column_name = 'column_name'
    </sqlCheck>
  </preConditions>
  <dropNotNullConstraint tableName="BULK_REQUEST" columnName="REMARKS"/>
</changeSet>

Предпосылки для различных баз данных можно найти здесь

Ответ, предоставленный @user7834552, неверен, поскольку вопрос касается установки ненулевого ограничения.

Установка для ограничения допустимости значений NULL значения false означает, что вы хотите добавить ограничение в столбец. В этом случае вам нужно использовать тип изменения addNotNullConstraint.

жидкая основаaddNotNullConstraintдолжен быть ответ. также лучше использоватьdefaultNullValueатрибут, чтобы убедиться, что изменение прошло успешно. ниже взято из официального документа здесь

Обычно вы можете использовать тип изменения addNotNullConstraint, если хотите применить значение ограничения NOT NULL к определенной таблице вместо наличия в этой таблице столбцов, допускающих значение NULL. Тип изменения addNotNullConstraint заставляет столбец всегда содержать значение и не принимать значения NULL, поэтому вы не можете вставлять или обновлять запись без добавления значения в столбец, содержащий это ограничение.

Если передан атрибут defaultNullValue, все значения NULL для столбца будут обновлены до переданного значения перед применением ограничения. Если в вашей базе данных существуют нулевые значения и вы не используете атрибут defaultNullValue, изменение завершится неудачно.

Другие вопросы по тегам