2010-06-23 2 views
2

В MySQL можно ли добавлять столбцы по умолчанию после создания или создавать их автоматически? Краткий обзор:CREATE TABLE автоматически добавлять столбцы по умолчанию?

Все таблицы должны иметь 5 полей, которые стандартизированы в наших базах данных (created_on, created_by, row_status и т. Д.). Иногда разработчикам сложно запоминать это и/или не делать равномерно. В будущем мы хотели бы как-то автоматизировать задачу. Кто-нибудь знает, возможно ли создать какой-то внутренний скрипт mysql, который автоматически добавит набор столбцов в таблицу?

После прочтения некоторых ответов, я думаю, что перефразирую бит вопроса, вместо того, чтобы сделать это задачей для автоматической настройки (т. Е. КАЖДУЮ таблицу), сделать ее функцией, которую можно запустить с помощью пользователя, и проверить указанные столбцы и если не добавить их. Я довольно уверен, что это выходит за рамки SQL, и для этого потребуется язык сценариев, а не огромная проблема, но было предпочтительнее хранить вещи, инкапсулированные в SQL.

ответ

1

Я не очень хорошо разбираюсь в инструментах моделирования данных MySQL, но нет инфраструктуры для добавления столбцов в каждую таблицу, когда-либо создаваемую в базе данных. При этом автоматическое поведение тоже будет беспорядочным, если вы подумаете о ситуациях, когда кто-то добавил столбцы, но были опечатки. Или что, если у вас есть таблицы, которым разрешено идти против деловой практики (столбцы, которые вы указали, как правило, бесполезны для кодовых таблиц) ...

Среда разработки сложна в управлении, но наилучшим способом ее управления является делегирование ответственности & разрешений как можно меньше людей. IE: Могут быть 5 разработчиков, но только один из них может применять сценарии к TEST/PROD/etc, поэтому их ответственность - проверить правильность табличных скриптов.

+0

У вас здесь хороший момент. Я полагаю, я бы перефразировал, чтобы спросить, есть ли способ сделать внутреннюю функцию для добавления указанных столбцов, чтобы она не была автоматически вызвана, но есть возможность более быстрого добавления указанных столбцов. – CogitoErgoSum

+0

@CogitoErgoSum: Да, вы можете создайте хранимую процедуру в MySQL, но поскольку вам нужно будет передать имя таблицы в качестве параметра - вам придется использовать MySQL Prepared Statement (динамический SQL). Но это не серебряная пуля ... –

1

Я бы сказал сначала - не делайте этого. сделать таблицу аудита отдельно - и связать с триггерами.

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

+0

Столбцы, перечисленные в OP, типичны для обработки параллелизма; таблица аудита предназначена для отображения всей истории ... –

+0

OMG Ponies прав, хотя в определенном сценарии можно использовать основную таблицу для хранения информации, которую я ищу, и удерживать столбцы для ссылки как на имя таблицы, так и на первичный идентификатор ... еще не самая идеальная ситуация. Я не уверен, как такой стол будет эффективен, особенно если мы ожидаем большого увеличения. – CogitoErgoSum

0

Я бы отложил до Randy's answer - эта информация, вероятно, лучше извлекается в другом месте.

При этом, если вы настроены на добавление столбцов, возможно, то, что вы ищете, ALTER TABLE. Вы можете также рассмотреть возможность включения дополнительной логики для определения того, какие столбцы отсутствуют для каждой таблицы.

+0

На этом маршруте одна миграция также создает скрипт PHP, основанный, возможно, который запускается после создания таблиц и обеспечения наличия необходимых столбцов .. если нет, добавьте их. Я обсуждал этот маршрут, но я надеялся узнать в SQL, если был более прямой маршрут. – CogitoErgoSum

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