Предположим, в командной строке SQL в Oracle 9i я создаю простую таблицу, скажем orderStatus , содержащую только два столбца с помощью следующей команды CREATE SQL.
CREATE TABLE orderStatus(statusID varchar2(6) primary key, status varchar2(15));
только тогда я ввожу четыре строки со следующими командами INSERT INTO.
INSERT INTO orderStatus VALUES("S0001", "Fulfilled");
INSERT INTO orderStatus VALUES("S0002", "Back order");
INSERT INTO orderStatus VALUES("S0003", "In process");
INSERT INTO orderStatus VALUES("S0004", "Cancelled");
При успешном выполнении вышеуказанных команд я запускаю команду COMMIT для завершения текущей транзакции.
COMMIT;
только тогда мне нужно запустить следующую команду DELETE.
DELETE FROM orderStatus WHERE statusID="S0004";
, которая удаляет одну строку с идентификатором состояния S0004.Теперь таблица содержит только 3 строки.
Предположим, мне нужно добавить ограничение NOT NULL в столбец состояния, для которого требуется следующая команда ALTER TABLE.
ALTER TABLE orderStatus MODIFY(status varchar(15) NOT NULL);
ТаблицаБудет изменено значение orderStatus, чтобы добавить ограничение NOT NULL в столбец состояния.
Теперь предположим, что в командной строке SQL я выполняю команду ROLLBACK, которая приводит к завершению текущей транзакции всеми данными, которые были ранее.затронутые в этой таблице будут отменены.При этом ранее удаленная строка с командой DELETE, приведенной выше, должна быть отменена, и таблица должна теперь содержать четыре исходные строки, но эффект ROLLBACK не может быть соблюден, и таблица будет иметь только три строки.Почему это происходит?