MySQL создает время и обновляет временную метку

Как я понимаю, это потому, что PDO будет рассматривать содержимое $ in_values ​​как отдельный элемент и будет вполне соответствующим образом. PDO увидит 1,2,3 как одну строку, поэтому запрос будет выглядеть примерно как

SELECT * FROM table WHERE my_value IN ("1,2,3")

Вы может подумать, что изменение impode будет иметь кавычки и запятые, чтобы исправить это, но это не будет. PDO увидит цитаты и изменит, как она цитирует строку.

Что касается того, почему ваш запрос соответствует первому значению, у меня нет объяснений.

13
задан Aishwar 15 August 2010 в 18:25
поделиться

4 ответа

Вы можете иметь два столбца типа timestamp в одной таблице.

Следующее работает для MySQL 5.0

create table t 
(
  id integer, 
  created_at timestamp default current_timestamp, 
  updated_at timestamp
);

Я думаю, вы путаете это с SQL Server (где метка времени на самом деле не является «меткой времени», и действительно существует ограничение на один столбец «метка времени»)

Править : Но вам понадобится триггер для обновления столбца update_at при каждом изменении строки.

11
ответ дан 1 December 2019 в 05:58
поделиться

Вам понадобятся два столбца: CREATE_TIME и UPDATE_TIME.

Вы можете добавить CREATE_USER и UPDATE_USER.

Возможно, вы захотите иметь отношение 1: многие с именем измененного столбца, старыми и новыми значениями.

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

0
ответ дан 1 December 2019 в 05:58
поделиться

Я бы оставил текущую метку времени так, как вы предлагали, и заполню поле created_at текущей датой при вставке.

0
ответ дан 1 December 2019 в 05:58
поделиться

Насколько мне известно, обходного пути для этого ограничения нет. Вам нужно будет вручную установить (как минимум) одну из временных меток. Самый простой способ - просто добавить updated = NOW () в запрос UPDATE .

2
ответ дан 1 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: