Я использую жидкостную базу в качестве боба пружинной загрузки. База данных - SQL Server 2012.
Я ожидаю остановки веб-службы из-за ошибки во время миграции, но liqubase просто записывает запись в таблицу DATABASECHANGELOG
и не останавливается.
есть моя ревизия:
--liquibase formatted sql
--changeset Dmitry_Atkaev:id
--preconditions onFail:HALT onError:HALT
BEGIN TRANSACTION
DECLARE @TableName NVARCHAR(128)
SELECT @TableName = '[dbo].[table]'
DECLARE @SQL NVARCHAR(MAX)
SELECT
@SQL = 'ALTER TABLE ' + @TableName + ' DROP CONSTRAINT ' + kc.name
FROM
sys.key_constraints kc
WHERE
kc.[type] = 'PK'
AND kc.parent_object_id = OBJECT_ID(@TableName)
EXEC SP_EXECUTESQL @SQL
ALTER TABLE dbo.table ADD PRIMARY KEY (col1, col2)
ALTER TABLE dbo.table DROP COLUMN col3
COMMIT
Я пытался обернуть свою миграцию, чтобы попытаться / поймать блок следующим образом:
BEGIN
BEGIN TRY
-- query
END TRY
BEGIN CATCH
THROW;
END CATCH
END;
но получите синтаксическую ошибку:
Reason: liquibase.exception.DatabaseException: Incorrect syntax near 'THROW'.
Кто-нибудь знает правильный синтаксис для этого?