Проверьте, является ли запись первой в месяце - PullRequest
0 голосов
/ 15 мая 2019

Я хочу проверить, была ли моя добавленная запись первой в месяце. Что я делаю неправильно? Покажите мне, как это сделать, пожалуйста.

Мне нравится

DECLARE var_month number; IF (INSERTING OR DELETING OR UPDATING) AND var_month <= 1 THEN

но это не сработало

Вот мой код запроса:

CREATE TABLE Client_Statistics
(
id number(20),
client_id number(20),
year number(4) check (year between 1900 and 9999),
month number(2) check (month between 1 and 12),
order_count varchar2(10),
order_sum number(10,2)
);


CREATE SEQUENCE cs_seq 
START WITH 1 
INCREMENT BY 1;


CREATE OR REPLACE TRIGGER add_record_with_sequence
AFTER 
INSERT OR DELETE OR UPDATE ON Orders
FOR EACH ROW
DECLARE sel number;
csdate number;

BEGIN
    IF INSERTING OR DELETING OR UPDATING
    THEN
    INSERT INTO Client_Statistics (id, client_id, year, month, order_count, order_sum)
    VALUES (cs_seq.nextval, cs_seq.nextval, 2019, 5, cs_seq.nextval, cs_seq.nextval);
    END IF;
    SELECT COUNT(*) into sel
    FROM Client_Statistics;
IF sel != NULL
THEN 
    INSERT INTO Client_Statistics (id, client_id, year, month, order_count, order_sum)
    VALUES (cs_seq.nextval, cs_seq.nextval,  2019, 5, cs_seq.nextval, cs_seq.nextval);
END IF;
END add_record_with_sequence;

Я ожидаю, что триггер сработает, если мой код в первом IF условии будет выполнен. Заранее спасибо.

1 Ответ

1 голос
/ 15 мая 2019

COUNT никогда не бывает NULL, поэтому то, что вы проверяете:

if sel != null

никогда не встречается.Используйте

if sel > 0 

вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...