Триггер / триггер для oracle


Мне нужно сделать тригер / триггер, чтобы, когда кто-то вставляет одно значение, оно изменяется, а другое вставляется.

т. е. я с веб-страницы я вставлю список продуктов с их идентификатором, но база данных, будучи в oracle не имеет auto_increment.

поэтому из интернета я всегда буду передавать один и тот же идентификатор, но затем в базе данных с триггером я хочу, чтобы значение идентификатора было изменено и изменено на последний id + 1.

я не знаю,возможно ли это сделать, если кто-то может помочь мне,я был бы признателен, я никогда не работал с trigeers

Author: francisco, 2018-05-20

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.

Надеюсь служить вам, приветствия!

 0
Author: Julian Perez, 2018-05-21 00:24:16