11
Zastanawiam się, czy można uzyskać maksymalną wartość kolumny z określonej tabeli i ustawić ją jako wartość sekwencji początkowej bez czystego sql. Poniższy kod nie działa:Ustawia maksymalną wartość kolumny jako wartość początkową sekwencji ze znacznikami liquibase
<property name="maxId" value="(select max(id)+1 from some_table)" dbms="h2,mysql,postgres"/>
<changeSet author="author (generated)" id="1447943899053-1">
<createSequence sequenceName="id_seq" startValue="${maxId}" incrementBy="1"/>
</changeSet>
masz błąd:
Caused by: liquibase.parser.core.ParsedNodeException: java.lang.NumberFormatException: For input string: "${m"
Próbowałem go bez nawiasów wokół select ...
itp z tym samym rezultatem. Więc nie można użyć wartości obliczonej jako wartości sekwencji początkowej?
Dla PostgreSQL jedyne co mogę myśleć jest stworzenie sekwencji, a następnie użyć '' tag uruchamiania 'wybrać SETVAL („id_seq” , (wybierz max (id) +1 z some_table)); '. –
Czy możesz przesłać resztę pliku konfiguracyjnego? W jakim środowisku korzystasz z liquibase? –
Norbert, Java8, Spring-boot 1.2.6, Liquibase 3.4.1, Postgres (9.3-1102-jdbc41) do wykonania i H2 do testów. – dfche