У меня есть хранимая процедура в Oracle 9i, которая вставляет записи в таблицу. У таблицы есть первичный ключ, созданный для того, чтобы избежать дублирования строк.
Я пытаюсь вставить запись, вызвав эту хранимую процедуру, и она в первый раз работает правильно. Я снова пытаюсь вставить повторяющуюся запись и ожидаю уникальную ошибку нарушения ограничения. Но я получаю
ORA-01401 слишком большое значение для столбца
Я знал его значение, но мой запрос таков: если введенное значение действительно велико, то как оно прошло успешно с первой попытки.
Таблица
CREATE TABLE KEY
(
ID VARCHAR2(25 BYTE),
KEY NUMBER(4) NOT NULL,
INSERT_DATE DATE,
WORK_KEY VARCHAR2(128 BYTE)
)
CREATE UNIQUE INDEX SACHINIDX ON KEY
(ID, KEY)
Звонок
EXEC SQL EXECUTE
НАЧАТЬ
keyadd (: id,: key,: wkey);
КОНЕЦ;
END-EXEC;
Хранимая процедура -
PROCEDURE keyadd(id IN VARCHAR2, key IN NUMBER, wkey IN VARCHAR2)
{
BEGIN
INSERT INTO KEY
( ID,
KEY,
INSERT_DATE,
WORK_KEY)
VALUES
(
id,
key,
SYSDATE,
wkey
);
EXCEPTION
ROLLBACK;
COMMIT;
RETURN;
END;
}
Первая вставка sqlca.sqlcode: [0]
Вторая вставка sqlca.sqlcode - [-1401]