我正在开发一个spring-boot(2.4.5)应用程序,使用envers来审计数据。当我从头开始使用这个应用程序时,一切都很好。从应用程序中,我可以将数据保存在数据库表中,而envers将审计数据存储在审计表中。
对于数据库CI/CD,我已经配置了Liquibase,执行了一个变更集。数据库创建时没有任何问题。
但是我的问题是当我想在一个变更集中添加insert语句来创建初始数据时,我该如何将这些初始数据添加到审计表中呢?
我的更改集:
-- changeset puser:1659003040757-1
CREATE SEQUENCE HIBERNATE_SEQUENCE START WITH 1 MAXVALUE 9999999999999999999999999999;
-- changeset puser:1659003040757-2
--preconditions onFail:WARN onError:WARN
--precondition-sql-check expectedResult:0 SELECT count(*) FROM USER_TABLES WHERE TABLE_NAME = 'AUDIT_REVISION_ENTITY';
CREATE TABLE AUDIT_REVISION_ENTITY
(
ID NUMBER(10, 0) NOT NULL,
TIMESTAMP NUMBER(19, 0) NOT NULL,
IP_ADDRESS VARCHAR2(255 CHAR),
USERNAME VARCHAR2(255 CHAR),
CONSTRAINT SYS_C0017210 PRIMARY KEY (ID)
) TABLESPACE DATAAPP;
-- changeset puser:1659003040757-3
CREATE TABLE USERS
(
ID RAW(16) NOT NULL,
CREATED_BY VARCHAR2(255 CHAR),
CREATED_DATE TIMESTAMP(6) NOT NULL,
MODIFIED_BY VARCHAR2(255 CHAR),
MODIFIED_DATE TIMESTAMP(6),
ACTIVE NUMBER(1, 0),
EMAIL VARCHAR2(200 CHAR) NOT NULL,
USER_LOGIN VARCHAR2(20 CHAR) NOT NULL,
USER_NAME VARCHAR2(200 CHAR) NOT NULL,
USER_PASSWORD VARCHAR2(256 CHAR) NOT NULL,
USER_ROLE VARCHAR2(50 CHAR) NOT NULL,
USER_SURNAME VARCHAR2(200 CHAR) NOT NULL,
CONSTRAINT SYS_C0017439 PRIMARY KEY (ID)
) TABLESPACE DATAAPP;
-- changeset puser:1659003040757-4
CREATE TABLE USERS_AUD
(
ID RAW(16) NOT NULL,
REV NUMBER(10, 0) NOT NULL,
REVTYPE NUMBER(3, 0),
CREATED_BY VARCHAR2(255 CHAR),
CREATED_DATE TIMESTAMP(6),
MODIFIED_BY VARCHAR2(255 CHAR),
MODIFIED_DATE TIMESTAMP(6),
ACTIVE NUMBER(1, 0),
EMAIL VARCHAR2(200 CHAR),
USER_LOGIN VARCHAR2(20 CHAR),
USER_NAME VARCHAR2(200 CHAR),
USER_PASSWORD VARCHAR2(256 CHAR),
USER_ROLE VARCHAR2(50 CHAR),
USER_SURNAME VARCHAR2(200 CHAR),
CONSTRAINT SYS_C0017442 PRIMARY KEY (ID, REV)
) TABLESPACE DATAAPP;
-- changeset puser:1659003040757-5
ALTER TABLE USERS_AUD
ADD CONSTRAINT FKLD7CDNHID45YC6535CECSHYOP FOREIGN KEY (REV) REFERENCES AUDIT_REVISION_ENTITY (ID);
-- changeset puser:1659003040757-6
INSERT INTO users (id, user_surname, user_name, user_login, user_password, user_role, email, created_by, created_date, active)
VALUES ('cca76b85f24d490b8df7fd8d91743835', 'APPUSER', 'APPUSER', 'APPUSER', '$2a$10$9wXu9hshOrtZ7RopythgF.XP93XbKtISBzv6QjTGBzq', 'ADMIN', 'app@appsuser.com', 'System', current_date, 1);
我的问题是***变更集如何在envers审计表中插入数据?***
INSERT INTO users_aud ???????????????????????????????```
1条答案
按热度按时间jc3wubiy1#
多亏了@Neeraj的评论,我终于可以用三个插件来修复了。
第一个
对于少量的插入件,这是一个快速的解决方案;对于大量的数据,我认为使用自定义变更集是更好的解决方案。