|
|
|
| С удивлением обнаружил, что такого в mysql нет.
В чем состоит задача: чтобы одним и тем же запросом можно было перекидывать значение поля.
Пока что наиболее вероятный кандидат на эту роль - тип enum. Но его внутренняя структура выглядит следующим образом:
Value Index
NULL NULL
'' 0
'one' 1
'two' 2
'three' 3
|
То есть имеется "пустой" нулевой индекс. То есть, задача вполне решаема... за исключением того, что нулевой индекс нельзя установить по умолчанию.
Итак, есть ли в mysql некий аналог булевого типа? Если нет, то что можно для этого использовать сравнительно полноценно? | |
|
|
|
|
|
|
|
для: Loki
(02.10.2006 в 18:08)
| | Не очень понятно, булевое значение - это "да" и "нет", которое реализовано в лучших традициях C: всё что 0 - ложь, всё что отлично от 0 - истина. NULL - задумывался как "не знаю", под ним может скрываться и ложь и истина и строка и всё, что угодно - отсуствие информации. Ведь SQL проектировался для бизнес-систем, где отсутствие информации очень важный параметр, который нельзя сбрасывать со счетов. Вы хотите NULL как-то обрабатывать, или приспособить NULL для булевых операций? | |
|
|
|
|
|
|
|
для: cheops
(02.10.2006 в 19:25)
| | Посмотрите внимательно: enum кроме значений прописаных пользователеми и null имеет еще одно состояние. Это состояние документировано, но тем не менее, поведение его довольно странное. | |
|
|
|
|
|
|
|
для: Loki
(02.10.2006 в 18:08)
| | А чем не устраивает обычный INT?
Перекидывается он совершенно спокойно: UPDATE tab SET fld = 1 - fld; | |
|
|
|
|
|
|
|
для: Trianon
(02.10.2006 в 21:26)
| | В итоге остановился на таком варианте. Просто не сразу до него додумался:) | |
|
|
|