ORA-01400: невозможно вставить NULL
Создается таблица последством 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")
разве нужно специально прописывать ID? он же должен генериться самостоятельно.
Ответы (1 шт):
Автор решения: 0xdb
→ Ссылка
В версии 11g не было ещё опции автоинкремента.
Надо вручную добавить последовательность и триггер, и приложение при вставке воспримет это как автоинкремент:
create sequence reg_status_seq nocycle nocache;
create or replace trigger reg_status_autoinc
before insert on reg_status for each row
begin
if :new.reg_id is null then
:new.REG_ID := name_of_sequence.nextval;
end if;
end;
/
И всё будет работать:
insert into reg_status (created_on, display_offset, status) values (
timestamp'2021-05-31 13:13:11.6469816', timestamp'2021-05-31 13:13:11.6469816', 'new');
1 row inserted.