View Javadoc

1   package liquibase.change.custom;
2   
3   import liquibase.database.Database;
4   import liquibase.exception.CustomChangeException;
5   import liquibase.statement.SqlStatement;
6   
7   /**
8    * Interface to implement when creating a custom change that generates SQL. When updating a database, implementing this
9    * interface is preferred over CustomTaskChange because the SQL can either be executed directly or saved to a text file
10   * for later use depending on the migration mode used. To allow the change to be rolled back, also implement the
11   * CustomSqlRollback interface. If your change requires sql-based logic and non-sql-based logic, it is best to create a
12   * change set that contains a mix of CustomSqlChange and CustomTaskChange calls.
13   * 
14   * @see liquibase.change.custom.CustomSqlRollback
15   * @see liquibase.change.custom.CustomTaskChange
16   */
17  public interface CustomSqlChange extends CustomChange {
18      /**
19       * Generates the SQL statements required to run the change
20       * 
21       * @param database
22       *            the target {@link liquibase.database.Database} associated to this change's statements
23       * @return an array of {@link SqlStatement}s with the statements
24       * @throws liquibase.exception.CustomChangeException
25       *             if an exception occurs while processing this change
26       * @throws liquibase.exception.UnsupportedChangeException
27       *             if this change is not supported by the {@link liquibase.database.Database} passed as argument
28       */
29      public SqlStatement[] generateStatements(Database database) throws CustomChangeException;
30  
31  }