2013-06-06 7 views
0

Давайте предположим, что у меня есть следующие таблицы в MySql со следующими столбцами:MySql делает поля доступными в зависимости от значения другого поля?

  • состояние (Boolean), который может принимать состояние 0 или 1;
  • col1 (доступен, если состояние = 1 // это означает, что он может быть изменен пользователем, если состояние = 1)
  • col2 (доступен, если состояние = 0)
  • col3 (доступны все время)

Как сделать такой стол в MySql?

+5

Это не имеет смысла ИМО, «доступный» должен выполняться в «слое кода». Поэтому создайте таблицу с текущими столбцами и выполните логику в коде. – HamZa

ответ

1

Как упоминалось в HamZa, «доступный» должен быть выполнен в слое кода. На самом деле я согласен, но это может быть спорно.

Опцией может быть использование разных видов. Вы бы создать представления, такие как

CREATE VIEW foo_1 AS 
SELECT state, col1, col3 
FROM foo 
WHERE state = 1; 

и

CREATE VIEW foo_2 AS 
SELECT state, col2, col3 
FROM foo 
WHERE state = 0; 

Но обратите внимание, что существуют определенные ограничения для представлений, поэтому они обновляемые/вставляться.

Единственная возможная проблема, которую я вижу до сих пор

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

За дополнительной информацией просьба обращаться к manual.

+0

большое спасибо – maggie

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