Liquibase 结果创建了一个表:
databaseChangeLog:
- changeSet:
validCheckSum: ANY
id: 1
author: some
changes:
- createTable:
tableName: REG_STATUS
columns:
- column:
name: id
type: BIGINT
autoIncrement: true
constraints:
primaryKey: true
nullable: false
- column:
name: reg_id
type: BIGINT
- column:
name: created_on
type: Timestamp
- column:
name: display_offset
type: Timestamp
- column:
name: status
type: varchar(50)
然后通过控制台将 Insert 传递给它jdbcTemplate.update,或者只是通过控制台的请求 - 结果是相同的。
ORA-01400: 无法插入 NULL
编码:
private static final String SAVE_NEW_REG_STATUS = "insert into REG_STATUS (REG_ID, CREATED_ON, DISPLAY_OFFSET, STATUS) values (:reg_id, :created_on, :display_offset, :status)";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("reg_id", 100);
paramMap.put("created_on", Timestamp.valueOf("2021-05-31 13:13:11.6469816"));
paramMap.put("display_offset", Timestamp.valueOf("2021-05-31 13:13:11.6469816"));
paramMap.put("status", "NEW");
int status = jdbcTemplate.update(SAVE_NEW_REG_STATUS, paramMap);
或者只是一个查询:
INSERT INTO REG_STATUS
(REG_ID, CREATED_ON, DISPLAY_OFFSET, STATUS)
VALUES
(5000, '2021-05-31 13:13:11.6469816', '2021-05-31 13:13:11.6469816', 'NEW');
回答:
[23000][1400] ORA-01400: невозможно вставить NULL в ("PS_REPORT"."REG_STATUS"."ID")
是否需要专门规定身份证?它也必须是自生的。
版本 11g 还没有自动增量选项。
您必须手动添加序列和触发器,应用程序将在粘贴时将此视为自动增量:
一切都会奏效: