Обеспечение заполнения последовательных полей в MySQL - PullRequest
1 голос
/ 16 июля 2011

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

например. Предположим, что таблица содержит следующие поля

Stage1Timestamp, Stage1AuthorizedBy, Stage2Timestamp, Stage2AuthorizedBy, Stage3Timestamp Stage3AuthorizedBy

Где метки времени - это даты и время, которые должны автоматически заполняться при добавлении информации AuthorizedBy. (иностранные ключи или коды или что-то в этом роде. Эта деталь не имеет значения.)

То, о чем я думаю, таково:

При определении AuthorizedBy установите для связанной даты и времени значение «Сейчас», если заполнены AuthorizedBy и Timestamp непосредственно перед предыдущим этапом. В противном случае, пустое текущее значение. Если значение Timestamp или AuthorizedBy не задано, удалите однорангового и непосредственного старшего.

Это должно работать нормально, если MySQL будет связывать триггеры. Это работает? Другие мысли?

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Я думаю, что вы должны решить эту проблему на прикладном уровне, однако здесь есть решение для БД, нет необходимости в триггерах - только внешние ключи.Все поля CreatedAt не являются нулевыми, по умолчанию now() - в MySQL он называется TIMESTAMP .

enter image description here

Это нормально только для процессов, которые не изменятся с течением времени.

1 голос
/ 17 июля 2011

Если вы используете InnoDB, ограничения внешнего ключа создаются для проверки подобных вещей за вас. Разделите его на 3 таблицы, добавьте ключи от этапа 2 к этапу 1 и от этапа 3 к этапу 2 и используйте ON DELETE SET NULL для достижения желаемого поведения.

Doc внешнего ключа

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