Поле зависящее от значений этого же поля в других строках.

BoTa

Новичок
Поле зависящее от значений этого же поля в других строках.

Возможно ли в mysql сделать поле, значение которого влияет на значения соседних полей этого же поля?

Пример:
PHP:
id   |   select
 1   |      0
 2   |      1
 3   |      0
 4   |      0
Изменение значения поля `select` в '1', приведет к смене значения `select` в '0' во всех остальных строках.


В документации ничего не нашел :(
 

kruglov

Новичок
Нет, но обычно такие единичные "current" удобно хранить в отдельной таблице.
 

BoTa

Новичок
Автор оригинала: kruglov
Нет, но обычно такие единичные "current" удобно хранить в отдельной таблице.
Жаль что mysql так не умеет. Лучше напишу функцию которая будет делать "selecte". Имхо, эстетичнее, чем отдельная таблица. Да и таблица небольшая.

Спасибо.
 

svetasmirnova

маленький монстрик
Вообще-то MySQL поддерживает триггеры

>Имхо, эстетичнее, чем отдельная таблица. Да и таблица небольшая.
с этим можно поспорить, особенно если таблица разрастётся
 

BoTa

Новичок
Вообще-то MySQL поддерживает триггеры
К сожалению только в 5й версии, а она не везде есть.

>Имхо, эстетичнее, чем отдельная таблица. Да и таблица небольшая.
с этим можно поспорить, особенно если таблица разрастётся
В моем случае таблица - это список языков(их кол-во предсказуемо).

Думаю лучше буду делать так:
PHP:
UPDATE `table` SET `select`='0';
UPDATE `table` SET `select`='1' WHERE `id`='<нужый id>';
 

chira

Новичок
BoTa

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

по существу:
поле такое сделать нельзя, но UPDATE написать можно:
UPDATE mytable SET `select`=(id=2)
 

jonjonson

Охренеть
Сдаётся мне, что здесь не правильный конструктив... Выбор языка в таблице языков? А зачем? Может каждому языку константу и хранить её?
 

BoTa

Новичок
Автор оригинала: jonjonson
Сдаётся мне, что здесь не правильный конструктив... Выбор языка в таблице языков? А зачем? Может каждому языку константу и хранить её?
Не совсем понял с константой.

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

tashkentchi

Новичок
Заведи таблицу опций и впиши в нее опцию "Язык по молчанию" со значением ИД языка по умолчанию.
 

BoTa

Новичок
Автор оригинала: tashkentchi
Заведи таблицу опций и впиши в нее опцию "Язык по молчанию" со значением ИД языка по умолчанию.
Всеравно надо хранить список языков. Чего же плохого в том что и язык по умолчанию отмечен в этой же таблице? На мой взгляд так нагляднее: есть сущности - языки, и одна таблица справляется с описанием этих сущностей.
 

tashkentchi

Новичок
Если таблица маленькая (2,3,...,10 языков - ерунда), то ничего плохого нет. Но все же я предпочел бы обойтись одной записью на 3 поля (ключ, название, значение) в специальной таблице опций вместо дополнительного столбца таблицы. Тем более, что хранение всех опций в единообразном виде упрощает создание административного интерфейса.
 

BoTa

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

WP

^_^
Это задается в конфиге, амиго. А то что ты хочешь сделать - из разряда сексуальных извращений.
 

BoTa

Новичок
Автор оригинала: WP
Это задается в конфиге, амиго. А то что ты хочешь сделать - из разряда сексуальных извращений.
В момент изменения параметров языков(в том числе язык по дефалту), система работает с таблицей языков. Зачем же тогда в момент выбора языка лезть и в таблицу с языками и в таблицу с настройками?
Просто не вижу минусов в том как делаю я. Убедите :)
 

jonjonson

Охренеть
BoTa, зачем ещё один запрос к БД, для поиска языка по у молчанию, кода достаточно константы?
Как часто изменяется язык по умолчанию? Редко или почти никогда.
Вам нечем загрузить БД кроме как не нужными запросами о не значимой практически информации? :)
 
Сверху