2015-12-02 5 views
0

У меня есть oracle 11g db.i хочу создать триггер на таблице с именем GG_TEST_SMS_LOG. таблица имеет один столбец с именем SMS_LOG_ORIG. где существует 10 цифр числового значения.Как создать триггер с футлярами

Теперь я хочу, если новая строка вставляется в таблицу GG_TEST_SMS_LOG, если значение столбца SMS_LOG_ORIG последняя цифра, как 1, то строка будет вставлена ​​в другую таблицу с именем, как GG1_TEST_SMS_LOG.

как это у нас есть 10 таблиц GG<N>_TEST_SMS_LOG. где значение N равно от 0 до 9. Новая строка должна вставляться в другую таблицу в зависимости от последнего числа цифр значения столбца SMS_LOG_ORIG.

+2

Что имеет 'mysql'got, чтобы сделать ваш вопрос? –

ответ

0

Чтобы определить последнюю цифру числа, вы можете сделать что-то вроде

DECLARE 
    cLast_digit CHAR(1); 
    n   NUMBER := 12345; 
BEGIN 
    cLast_digit := SUBSTR(TO_NUMBER(n), -1); 
END; 

Лучший удачи.

0
Hope this code snippet illustrates the problem discussed. Let me know if this helps. 

CREATE OR REPLACE TRIGGER "AVROY"."TRI_CHCK_TRIGGER" AFTER 
    INSERT OR 
    UPDATE ON TRI_CHCK FOR EACH ROW DECLARE LV_ERR_CODE_OUT NUMBER; 
    LV_ERR_MSG_OUT VARCHAR2(2000); 
    BEGIN 
    IF SUBSTR(:new.ID_NO,LENGTH(:NEW.ID_NO),LENGTH(:NEW.ID_NO)) = 1 THEN 
     INSERT INTO EMP 
     (EMPNO 
     ) VALUES 
     (:new.ID_NO 
     ); 
    ELSIF SUBSTR(:new.ID_NO,LENGTH(:NEW.ID_NO),LENGTH(:NEW.ID_NO)) = 2 THEN 
     INSERT INTO EMP_V1 
     (EMPNO 
     ) VALUES 
     (:new.ID_NO 
     ); 
    END IF; 
    END; 
0

Простой способ получить последнюю цифру, чтобы использовать MOD():

with v_data(pk) as (
    select 100000+level 
    from dual 
    connect by level <= 10 
) 
select pk, mod(pk, 10) from v_data 

Таким образом, все, что вам нужно сделать, это использовать MOD(<column name>, 10) = 1, чтобы проверить, является ли последняя цифра является 1. Интегрируя в ваш триггер должен быть довольно простым.

Смежные вопросы