运行DROP PROCEDURE IF EXISTS schema_change; CREATE PROCEDURE schema_change() AS $$ BEGIN CREATE TABLE IF NOT EXISTS "bis_record_upload_list" ( "pkid" serial NOT NULL, "hash_code" character varying(255) DEFAULT NULL, "path" character varying(255) DEFAULT NULL, CONSTRAINT "bis_record_upload_list_pk" PRIMARY KEY ("pkid"), CONSTRAINT "bis_record_upload_list_hash_code_key" UNIQUE ("hash_code") ); IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema = current_schema() AND table_name = 'bis_record_upload_list' AND column_name = 'hash_code') THEN ALTER TABLE "bis_record_upload_list" ADD COLUMN "hash_code" character varying(255) DEFAULT NULL; END IF; END; $$ LANGUAGE PLPGSQL; CALL schema_change(); DROP PROCEDURE IF EXISTS schema_change;出现SQL 错误 [25P02]: 错误: 当前事务被终止, 事务块结束之前的查询被忽略
时间: 2024-04-06 09:33:39 浏览: 17
这个错误通常出现在事务操作中,可能是因为事务未正确提交或回滚导致的。您可以尝试在每个语句之间添加COMMIT或ROLLBACK语句来解决此问题。以下是修改后的Kingbase存储过程语句:
BEGIN;
DROP PROCEDURE IF EXISTS schema_change;
CREATE PROCEDURE schema_change() AS $$
BEGIN
CREATE TABLE IF NOT EXISTS "bis_record_upload_list" (
"pkid" serial NOT NULL,
"hash_code" character varying(255) DEFAULT NULL,
"path" character varying(255) DEFAULT NULL,
CONSTRAINT "bis_record_upload_list_pk" PRIMARY KEY ("pkid"),
CONSTRAINT "bis_record_upload_list_hash_code_key" UNIQUE ("hash_code")
);
IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema = current_schema() AND table_name = 'bis_record_upload_list' AND column_name = 'hash_code') THEN
ALTER TABLE "bis_record_upload_list" ADD COLUMN "hash_code" character varying(255) DEFAULT NULL;
END IF;
END;
$$ LANGUAGE PLPGSQL;
COMMIT;
BEGIN;
CALL schema_change();
COMMIT;
BEGIN;
DROP PROCEDURE IF EXISTS schema_change;
COMMIT;
请注意,我在每个语句之前添加了BEGIN和COMMIT语句,以确保每个语句都在单独的事务中执行。另外,在每个语句之后,我添加了COMMIT语句以确保事务被正确提交。