Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> NOT NULL поля хранят пустые строки 
V
    Опции темы
Akina
Дата 27.11.2009, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



А почему нет? чем она хуже любой другой строки?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
DimW
Дата 27.11.2009, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(Akina @  27.11.2009,  10:10 Найти цитируемый пост)
А почему нет? чем она хуже любой другой строки? 


Akina, ты знаешь, наверное это из разряда - когда считали что земля плоская а потом выяснелось что нет, и в голове не умещается как с этим теперь жить...  smile 
PM MAIL ICQ   Вверх
Akina
Дата 27.11.2009, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Ну... в общем да. 
Цитата(azesmcar @  27.11.2009,  10:58 Найти цитируемый пост)
 эта идея мне не очень нравиться, ради валидации пустой строки триггер делать, но как я понял по другому никак

Да пожалуйста! вынеси эту логику на клиента, если тебе не нравится триггер. Это, конечно, идеологически плохо, но вполне работоспособно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
azesmcar
Дата 27.11.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата(Akina @  27.11.2009,  10:36 Найти цитируемый пост)
Да пожалуйста! вынеси эту логику на клиента, если тебе не нравится триггер. Это, конечно, идеологически плохо, но вполне работоспособно. 

Вынес, думаю над триггерами.

Это сообщение отредактировал(а) azesmcar - 27.11.2009, 10:40
PM   Вверх
Zloxa
Дата 27.11.2009, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Милый вышел холиварчик smile

В бытность, когда я писал для MS, я  находил вполне естественным и понятным, что null и '' cуть разные вещи. И тому я находил применение.
Когда я переполз на ораклю, был несколько шокирован положением дел в оном. Однако теперь привык. Случай, когда имеет смысл разделять понятия null и '' теперь не могу придумать. Однако то, что length('') возвращает Null, instr('','A') возвращает null - и ныне нахожу нелогичным

ну не маразм ли?:
Код

SQL> select s,length(replace(s,'A')) from (
  2    select 'ABAB' s  from dual
  3    union all select 'AAA' from dual
  4    union all select 'BBB' from dual
  5  )
  6  ;
 
S    LENGTH(REPLACE(S,'A'))
---- ----------------------
ABAB                      2
AAA  
BBB                       3




--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 27.11.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Zloxa @  27.11.2009,  12:33 Найти цитируемый пост)
Случай, когда имеет смысл разделять понятия null и '' теперь не могу придумать.

Если значение поля при создании записи не заполняется (поле отсутствуе в insert into), а впоследствии может заполняться и корректироваться (в т.ч. очищаться, но не за-null-яться - поле обязательно присутствует в update table) - наличие null свидетельствует о том, что запись с момента заведения больше не обрабатывалась.

Цитата(Zloxa @  27.11.2009,  12:33 Найти цитируемый пост)
ну не маразм ли?:

MySQL более логичен...
Код

mysql> use test
Database changed
mysql> create table test (txt text);
Query OK, 0 rows affected (0.16 sec)

mysql> insert into test (txt) values ('ABAB'),('AAAA'),('BBBB'),(null);
Query OK, 4 rows affected (0.02 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select txt,replace(txt,'A',''),length(replace(txt,'A','')) from test;
+------+---------------------+-----------------------------+
| txt  | replace(txt,'A','') | length(replace(txt,'A','')) |
+------+---------------------+-----------------------------+
| ABAB | BB                  |                           2 |
| AAAA |                     |                           0 |
| BBBB | BBBB                |                           4 |
| NULL | NULL                |                        NULL |
+------+---------------------+-----------------------------+
4 rows in set (0.00 sec)

mysql>


Это сообщение отредактировал(а) Akina - 27.11.2009, 12:04


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 27.11.2009, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(Akina @  27.11.2009,  11:55 Найти цитируемый пост)
 наличие null свидетельствует о том

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

В СУБД ты являешься творцом мира и создавать мох только для того чтобы потом самому же определять по его росту где север - наверное было бы не логично.

Если нам необходимо знать инфомрацию о том апдейтилась ли запись после инсерта - от чего бы не хранить дату создания и дату модификации?

Цитата(Akina @  27.11.2009,  11:55 Найти цитируемый пост)
MySQL более логичен...

И я ж о том же smile
Так маразм кажется еще чуть более крепким:
Код

SQL> select s,instr(replace(s,'A'),'A') from (
  2    select 'ABAB' s  from dual
  3    union all select 'AAA' from dual
  4    union all select 'BBB' from dual
  5  )
  6  ;
 
S    INSTR(REPLACE(S,'A'),'A')
---- -------------------------
ABAB                         0
AAA  
BBB                          0



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 27.11.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Zloxa @  27.11.2009,  13:12 Найти цитируемый пост)
Если нам необходимо знать инфомрацию о том апдейтилась ли запись после инсерта - от чего бы не хранить дату создания и дату модификации?

Да потому что мог быть апдейт части записи, не затрагивающий указанное поле. Не хранить же дату модификации для каждого поля? и создавать, а потом дёргать каждый раз историю изменений - тоже не всегда оправдано.
Хотя согласен, что варианта, когда такое различие значимо на практике, придумать сложновато. Я пока сталкивался с подобным лишь единожды - в задаче подгрузки внешнего справочника с синхронизацией локального имено так определялось, обработана ли запись, которой не нашлось соответствия в автоматическом режиме, или нет. Там для новой номенклатуры при обработки могли вставляться некоторые характеристики, а могли и не вставляться. Во втором случае вместо null как раз в поле клалась пустая строка, и оператор, осуществлявший обработку, не получал ранее просмотренные записи на повторный просмотр.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0758 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.