Дата по умолчанию (триггер) вставляет дату клобберов - PullRequest
1 голос
/ 19 марта 2012

Это школьная работа ..
Я пытаюсь создать таблицу с датой по умолчанию в будущем и нашел отличное решение здесь .В этом ответе говорится, что если в операторе INSERT указана дата, он переопределит триггер.Однако, когда я пытаюсь заполнить таблицу некоторыми старыми данными, включая дату, триггер сжимает дату.Я чувствую, что просто упускаю что-то очевидное.

create table member (
    member_id int not null primary key auto_increment,
    last_name varchar(25) not null,
    first_name varchar(25),
    address varchar(100),
    city varchar(30),
    phone varchar(15),
    join_date datetime not null);
create trigger setJoinDate
    before insert on member
    for each row
    set NEW.join_date = curdate();

Поэтому, когда я вставляю некоторые данные:

insert into member
    set
        first_name = 'Midori',
        last_name = 'Nagayama',
        address = '68 Via Centrale',
        city = 'Sao Paolo',
        phone = '254-852-5764',
        join_date = '1991-6-17';

Дата переопределяется:

mysql> select first_name,join_date from member;
+------------+---------------------+
| first_name | join_date           |
+------------+---------------------+
| Midori     | 2012-03-18 00:00:00 |
+------------+---------------------+

1 Ответ

0 голосов
/ 19 марта 2012

Вам необходимо добавить условие в триггер.

Например:

create trigger setJoinDate
    before insert on member
    for each row
    set NEW.join_date = IFNULL(NEW.join_date, CURDATE());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...