Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle:тригер за автоматично нарастване.

Добре, мисля, че разбирам какво става. Отговорът на вашия въпрос е абсолютно голямо дада . Може да има голямо въздействие, ако деактивирате този тригер.

Причината, поради която този тригер изглежда съществува, е да се справи със ситуацията, при която стойността на първичен ключ е не предоставени във вложка във вашата таблица. Ако това се случи някъде във вашия код тяхното премахване на тригера ще прекъсне тези вмъквания.

Трябва да направите две неща.

  1. Коригирайте спусъка, очевидно е счупен; поправи го:

    CREATE OR REPLACE TRIGGER  BI_PRIVILEGE
      before insert on PRIVILEGE              
      for each row  
    begin   
      if :NEW.PRIVILEGE_ID is null then 
        select PRIVILEGE_SEQ.nextval into :NEW.PRIVILEGE_ID from dual; 
      end if; 
    end; 
    

    Ако използвате Oracle 11G или по-нова версия, можете да използвате това вместо това:

      if :NEW.PRIVILEGE_ID is null then 
        :NEW.PRIVILEGE_ID := PRIVILEGE_SEQ.nextval; 
      end if; 
    
  2. Разберете дали това наистина се случва. Ако вмъкнете записи без първичен ключ, трябва да разберете защо това се случва и дали поведението е правилно. Ако сте блокирали спусъка, в противен случай поправете това. Ако никога не вмъквате записи без първичен ключ, можете да деактивирате тригера.

    Най-бързият начин да разберете може да бъде да деактивирате спусъка така или иначе, но това ще счупи вашите вложки. Ако това е производствена база данни, само вие можете да кажете дали си заслужава. Аз лично не бих.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Връщане на имена на колони на Oracle във формат table.column?

  2. Oracle премества колоната на първата позиция

  3. Oracle:LIKE, където всяка част от един низ съвпада с която и да е част от друг низ

  4. Процедура Препълване на буфера

  5. Escape долна черта в PL/SQL