liquibase postgresql创建函数

时间:2017-02-23 17:03:06

标签: postgresql jenkins liquibase

我正在使用liquibase为postgressql数据库创建触发器。以下是我在liquibase中使用的语法

var figure = function(name) {
    return function(f) {
        return $('<figure data-name="' + name + '"><img src="' + URL.createObjectURL(f)' + "><figcaption><input type=checkbox checked><br>' + f.name + '</figcaption></figure>').data("f",f);
    };
};

在Jenkins Job中执行此过程时,我收到此错误

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

    <changeSet id="1" author="yc14ik1">

        <createProcedure catalogName="cat" dbms="postgresql"
            encoding="utf8" procedureName="UPDATE_LAST_ROW_CHG_TS()" relativeToChangelogFile="true" schemaName="sub">

            CREATE OR REPLACE FUNCTION UPDATE_LAST_ROW_CHG_TS() RETURNS trigger
            LANGUAGE plpgsql
            AS $$
            BEGIN
                NEW.LAST_ROW_CHG_TS = NOW();
                RETURN NEW;
            END;
            $$;

        </createProcedure>


        <sql></sql>
</changeSet>

有人可以帮助我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我以不同的方式设置我的工作正常。

<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd
        http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
        <changeSet author="l" id="UPDATE_LAST_ROW_CHG_TS" runOnChange="true">
                <createProcedure catalogName="UPDATE_LAST_ROW_CHG_TS"
                        dbms="postgresql"
                        encoding="utf8"
                        path="../files/UPDATE_LAST_ROW_CHG_TS.sql"
                        procedureName="UPDATE_LAST_ROW_CHG_TS"
                        relativeToChangelogFile="true"
                        schemaName="public"></createProcedure>
        </changeSet>
</databaseChangeLog>

从那里你将所有sql放在path属性中引用的.sql文件中。

我不知道你的方式不会工作,但我觉得你的底部有空标签似乎很奇怪。也许你的意思是那些包装你的sql函数?

无论如何我知道如果配置liquibase并正确运行,上面的示例将会起作用。