Триггер / триггер для oracle
Мне нужно сделать тригер / триггер, чтобы, когда кто-то вставляет одно значение, оно изменяется, а другое вставляется.
т. е. я с веб-страницы я вставлю список продуктов с их идентификатором, но база данных, будучи в oracle не имеет auto_increment.
поэтому из интернета я всегда буду передавать один и тот же идентификатор, но затем в базе данных с триггером я хочу, чтобы значение идентификатора было изменено и изменено на последний id + 1.
я не знаю,возможно ли это сделать, если кто-то может помочь мне,я был бы признателен, я никогда не работал с trigeers
1 answers
¡Эй, что за друг!
В идеале в базе данных вы должны использовать последовательности, здесь я оставляю документацию об этом.
Https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6015.htm#SQLRF01314
Http://www.tutorialesprogramacionya.com/oracleya/temarios/descripcion.php?cod=193&punto=1&inicio=
И здесь я оставляю вам документацию triggers, с примером приведения текущего значения последовательности и выполнения вставка поля id будет иметь следующее значение последовательности, следовательно, будет как autoincremental.
Https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7004.htm
Http://www.devjoker.com/contenidos/catss/54/Triggers-en-PLSQL.aspx
Пример:
CREATE OR REPLACE TRIGGER nombre_trigger
BEFORE INSERT ON nombre_tabla
FOR EACH ROW
BEGIN
SELECT nombre_secuencia.nextval INTO :NEW.id
FROM DUAL;
END
Таким образом, когда вы делаете insert из бэкэнда, не передавайте никаких значений идентификатору, т. е. вместо этого:
INSERT INTO nombre_tabla(id,campo1) VALUES(1,'valor_campo1')
Вы делаете это:
INSERT INTO nombre_tabla(campo1) VALUES('valor_campo1')
И уже триггер обновляет только поле id, как если бы оно было autoincremental.
Надеюсь служить вам, приветствия!