2014-01-27 3 views
0

Мне нужно сделать только одну вставку/день на таблице Mysql.Mysql Trigger для вставки последней даты

DELIMITER $$ 

CREATE TRIGGER trig 
BEFORE INSERT ON Table 
FOR EACH ROW BEGIN 
/** compare the date with the latest inserted **/ 
    IF() THEN 
    // if it's ok => insert 
    ELSE 
    // nothing 
    END IF; 
END$$ 

DELIMITER ; 

Я хочу сравнить последнюю вставленную дату и текущую дату, а затем инициировать запуск, чтобы выполнить работу.

+0

Добро пожаловать в StackOverflow: если вы разместите код, XML или данных образцов, пожалуйста ** ** выделить те строки в текстовом редакторе и нажмите на кнопку «образцы кода» (' {} ') на панели инструментов редактора, чтобы красиво отформатировать и выделить синтаксис! Тогда вам не нужны никакие из этих беспорядочных '
' тегов! –

+0

Вам нужно вставить первую запись или последний раз в день? – Devart

ответ

0

Вы можете достичь этого без триггера (это хорошо, что правильно?), Создав ограничение UNIQUE на столбце даты и затем используя синтаксис INSERT IGNORE.

Предположим, у вас есть таблица со следующей схемой

CREATE TABLE table1 
(
    date DATE, 
    value INT 
); 

Давайте создадим UNIQUE ограничение

CREATE UNIQUE INDEX idx_date_unique ON table1 (date); 

Теперь вы можете использовать IGNORE пункт

INSERT IGNORE INTO table1 VALUES (CURDATE(), 1); 
INSERT IGNORE INTO table1 VALUES (CURDATE(), 2); 
INSERT IGNORE INTO table1 VALUES (CURDATE(), 3); 

В результате вас» Для каждого дня в таблице будет только первая строка.

Вот SQLFiddle демо

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