Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Вниз

Используя ЗАБОЙ, полю присваивается NULL, а хотелось бы НОЛЬ   Найти похожие ветки 

 
q-q   (2006-06-06 10:07) [0]

При удалении цифры используется Забой => Полю присваивается NULL, а хотелось бы НОЛЬ. Устанавливать NOT NULL полю не хотелось бы (удалять инф-цию удобней Забоем, а не НУЛЕМ). Триггер на update (if f.new is null then f.new=0) по каждому числовому полю тоже нехорошо.
Подскажите, как решить оптимальнее на уровне базы.


 
Ega23 ©   (2006-06-06 10:10) [1]

Что такое "Забой"???????????


 
q-q   (2006-06-06 10:12) [2]

"ЗАБОЙ" = Backspase | Delete


 
Сергей М. ©   (2006-06-06 10:15) [3]

на стороне клиента в обработчике TDataSet.OnBeforePost() пройтись в цикле по полям дейтасета, для каждого поля типа TIntegerField проверить условие IsNull(Value) и если Истина, то тут же присвоить Value = 0


 
q-q   (2006-06-06 10:16) [4]

А на уровне базы


 
Ega23 ©   (2006-06-06 10:19) [5]


> А на уровне базы


А где ты видел  Backspase | Delete на уровне базы???


 
Polevi ©   (2006-06-06 10:20) [6]

триггер


 
Сергей М. ©   (2006-06-06 10:21) [7]


> q-q   (06.06.06 10:16) [4]
>
> А на уровне базы


Это и есть "на уровне базы".

Если же речь идет о стороне сервера, то без явного перебора полей в триггере не обойтись.

Впрочем, в FB можно выкрутиться с пом. EXECUTE STATEMENT и прямым обращением к сист.таблицам, но решение не будет совместимо с IB


 
q-q   (2006-06-06 10:24) [8]

Хотелось бы при присваивании полю значения NULL, чтобы оно становилось НУЛЕМ. История про ЗАБОЙ рассказана только для пояснения ситуации, почему такая необходимость возникла.


 
Johnmen ©   (2006-06-06 10:29) [9]

Объявить поле с NOT NULL DEFAULT 0


 
Sergey13 ©   (2006-06-06 10:29) [10]

2[8] q-q   (06.06.06 10:24)
Вошебства не бывает. "Триггер на update (if f.new is null then f.new=0)" нормальный и самый правильный выход.


 
q-q   (2006-06-06 10:38) [11]

>Johnmen ©   (06.06.06 10:29) [9]
>Объявить поле с NOT NULL DEFAULT 0

Тогда придется удалять инф-цию обнулением поля

to Sergey13

Числовых полей - много, и их число увеличивается. Для каждого создавать триггер - монотонная работа, а точно "Вошебства не бывает" ?


 
Сергей М. ©   (2006-06-06 10:40) [12]


> Johnmen ©   (06.06.06 10:29) [9]


DEFAULT, afair, используется только при вставке.


 
Sergey13 ©   (2006-06-06 10:44) [13]

2[11] q-q   (06.06.06 10:38)
>Числовых полей - много, и их число увеличивается.

Наверное спроектировано не очень хорошо. Симптом известный. 8-)

>Для каждого создавать триггер - монотонная работа, а точно "Вошебства не бывает" ?

Не всякая работа творчество. Встречается и монотонная. А кому щас легко? 8-)


 
Johnmen ©   (2006-06-06 10:56) [14]


> Сергей М. ©   (06.06.06 10:40) [12]


Конечно.
Так у автора апдейт.... Тогда уже сказали - триггеры.


 
Сергей М. ©   (2006-06-06 11:07) [15]


> Johnmen ©   (06.06.06 10:56) [14]


Если у автора, как он утверждает, таких полей вагон и тележка, решение с триггером может привести в тупик - размер кода триггера, как известно, лимитирован.


 
q-q   (2006-06-06 11:26) [16]

>Sergey13 ©   (06.06.06 10:44) [13]
> >Числовых полей - много, и их число увеличивается.
>Наверное спроектировано не очень хорошо. Симптом известный. 8-)

Допустим, сегодня я ввел километраж на утро и километраж на вечер, а завтра воткнул бортовые компьютеры (БК). Завтра новые параметры - литров бензина на утро и вечер. Вчера, когда приектировал, БК еще не были изобретены. Причем тут "спроектировано не очень хорошо".


 
Ega23 ©   (2006-06-06 11:30) [17]


> Допустим, сегодня я ввел километраж на утро и километраж
> на вечер, а завтра воткнул бортовые компьютеры (БК). Завтра
> новые параметры - литров бензина на утро и вечер. Вчера,
>  когда приектировал, БК еще не были изобретены. Причем тут
> "спроектировано не очень хорошо".


Если бы было спроектировано хорошо, то твои БК воткнулись бы совершенно без проблем.
Расширять таблицу надо очень аккуратно. А то видал я таблицы по 50 полей, причём одно и то же поле для разных записей трактуется по-разному.


 
Sergey13 ©   (2006-06-06 11:31) [18]

2[16] q-q   (06.06.06 11:26)
>Причем тут "спроектировано не очень хорошо".
При том, что много и постоянно растет их количество. 8-)
И твои утренние и вечерние километраж и литры наглядно демонстрируют мою догадку. 8-)


 
Johnmen ©   (2006-06-06 11:33) [19]


> Сергей М. ©   (06.06.06 11:07) [15]


Это ж сколько д.б. полей, чтобы выйти за 48К (причём компилированного кода)??? :)
Если их действительно так много, то это проблемы консерватории...:)))


 
Сергей М. ©   (2006-06-06 11:36) [20]


> Причем тут "спроектировано не очень хорошо".


Когда число атрибутов, характеризующих объект, заранее не известно (может варьироваться), атрибуты эти следует описывать и размещать в подчиненной таблице, каждая запись которой будет содержать один атрибут одного объекта. При этом добавление/модификация/удаление атрибута сводится к добавлению/модификации/удалению записи в этой таблице, а не к реструктуризации БД и переделке кода на сторонах клиента и/или сервера.


 
q-q   (2006-06-06 11:41) [21]

> Когда число атрибутов, характеризующих объект, заранее не известно

Заранее было ВСЁ! известно.

> следует описывать и размещать в подчиненной таблице

А если отображать и работать надо со строкой


 
q-q   (2006-06-06 11:43) [22]

Т. е. с табличным представлением данных


 
Sergey13 ©   (2006-06-06 11:45) [23]

2[21] q-q   (06.06.06 11:41)
> Заранее было ВСЁ! известно.
Не надо нервничать. НИКОГДА заранее ВСЕ! не известно. 8-)

>Т. е. с табличным представлением данных
Для этого существует язык SQL.


 
Сергей М. ©   (2006-06-06 11:46) [24]


> Johnmen ©   (06.06.06 11:33) [19]


Ну мало ли что там еще у автора в триггере будет твориться, кроме упомянутых проверок-присвоений)..

Впрочем, встречаются и такие "клинические случаи", когда народ умудряется достичь это лимита ..


 
Сергей М. ©   (2006-06-06 11:50) [25]


> q-q   (06.06.06 11:41) [21]


> Вчера, когда приектировал, БК еще не были изобретены


> Заранее было ВСЁ! известно


Ты сам себе противоречишь, заметь !

Мол, БК еще и в помине нет, но мне они уже известны ..


> с табличным представлением данных


Заметь - представлением ! А не хранением ...

Хранение и представление - разные вещи.


 
q-q   (2006-06-06 11:56) [26]

>Sergey13 ©   (06.06.06 11:45) [23]
>Не надо нервничать. НИКОГДА заранее ВСЕ! не известно. 8-)
Параметры километраж на утро и вечер являются неотъемлимой частью путевого листа в сознании всех логистов мира, и закладывать сюда вероятность появления других аттрибутов кажется некорректным

>Для этого существует язык SQL.
Ну-ка, ну-ка. Как с помощью SQL вытащить записи подчинненной таблицы в строку главной


 
ЮЮ ©   (2006-06-06 12:00) [27]

>сегодня я ввел километраж на утро и километраж на вечер

А про полдень и полночь забыл? Разве Километраж - это атрибут какого-то объекта, дабы было два поля "километраж на утро" и  "километраж на вечер".
Это его динамечески изменяющееся свойство, а раз динамика, значит, что-то типа:
Километрах (
Обект,
ДатаВремяИзмерения,
Величина
)


 
Ega23 ©   (2006-06-06 12:01) [28]


> Ну-ка, ну-ка. Как с помощью SQL вытащить записи подчинненной
> таблицы в строку главной


1. А нафига?
2. Есть такая штука - join.


 
Sergey13 ©   (2006-06-06 12:03) [29]

2[26] q-q   (06.06.06 11:56)
>Параметры километраж на утро и вечер являются неотъемлимой частью путевого листа в сознании всех логистов мира
Так ты логист?!!! Тогда понятно. Логисту простительно вводить в таблицу авто атрибуты ежедневного километража. 8-)

>Ну-ка, ну-ка.
Не "нукай" - не запряг еще.

>Как с помощью SQL вытащить записи подчинненной таблицы в строку главной
Надо соединить ("сджоинить") главную и подчиненную таблицы. Это азы SQL. То, для чего он и предназначен.


 
ЮЮ ©   (2006-06-06 12:03) [30]


> Параметры километраж на утро и вечер являются неотъемлимой
> частью путевого листа в сознании всех логистов мира,


Даже если экспедитор работает в ночную смену? Сознание лрогистов при этом не переворачивается? :)


 
q-q   (2006-06-06 12:05) [31]

>Ega23 ©   (06.06.06 12:01) [28]
>> Ну-ка, ну-ка. Как с помощью SQL вытащить записи подчинненной
>> таблицы в строку главной
>1. А нафига?
>2. Есть такая штука - join.

Для адыкватного восприятия действительности


 
Сергей М. ©   (2006-06-06 12:06) [32]


> q-q   (06.06.06 11:56) [26]


> Как с помощью SQL вытащить записи подчинненной таблицы в
> строку главной


Не надо туда ничего "вытаскивать", не для того главная таблица предназначена при такой структуре БД.


 
Ega23 ©   (2006-06-06 12:07) [33]


> Для адыкватного восприятия действительности


Для этого обычно Master-Detail связку организовавают. В данном случае.


 
q-q   (2006-06-06 12:08) [34]

> ЮЮ ©   (06.06.06 12:03) [30]
> Даже если экспедитор работает в ночную смену? Сознание лрогистов
> при этом не переворачивается? :)

Это со скрипом еще проходит, вот когда счетчик начнет новый круг - вот это да.


 
ЮЮ ©   (2006-06-06 12:10) [35]


> Допустим, сегодня я ввел километраж на утро и километраж
> на вечер, а завтра воткнул бортовые компьютеры (БК).


Если завтра бортывые компьютеры станут неотъемлимой
частью путевого листа
, что станут  делать логисты всего мира ?


 
Sergey13 ©   (2006-06-06 12:11) [36]

2[34] q-q   (06.06.06 12:08)
А логистов всего мира не интересует вчерашний утренний километраж? Не говоря уж о среднемесячном литраже.


 
ЮЮ ©   (2006-06-06 12:17) [37]


> Sergey13 ©   (06.06.06 12:11) [36]

Так они же путевые листы не выбрасывают, надеюсь.

Только откуда у автора проблемы с нулями в озвученных атрибутах. Водители спидометры каждый день на 00000 скручивают?


 
q-q   (2006-06-06 12:30) [38]

>ЮЮ ©   (06.06.06 12:17) [37]
>Только откуда у автора проблемы с нулями в озвученных атрибутах. ?>Водители спидометры каждый день на 00000 скручивают

Пример с водителями взялся из воздуха на фразу:

>Sergey13 ©   (06.06.06 10:44) [13]
>2[11] q-q   (06.06.06 10:38)
>>Числовых полей - много, и их число увеличивается.
>Наверное спроектировано не очень хорошо. Симптом известный. 8-)

и к сабдж никакого отношения не имеет


 
Сергей М. ©   (2006-06-06 12:36) [39]


> q-q   (06.06.06 12:30) [38]


> к сабдж никакого отношения не имеет


Еще как имеет !

При грамотной организации структуры БД проблема по сабжу отпадает сама собой.


 
Sergey13 ©   (2006-06-06 12:36) [40]

2[38] q-q   (06.06.06 12:30)
>Пример с водителями взялся из воздуха на фразу:
Ну так не все воздушные катаклизмы достойны опубликования. 8-)))))))))))))))



Страницы: 1 2 3 вся ветка

Форум: "Базы";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.049 c
6-1143620055
Std
2006-03-29 12:14
2006.08.13
Определение IP


2-1153654992
learner
2006-07-23 15:43
2006.08.13
Сервер и его зависимости :))


8-1139581351
Eraser
2006-02-10 17:22
2006.08.13
MIXERLINE.dwComponentType и запись со стереомикшера


1-1151654796
dddd
2006-06-30 12:06
2006.08.13
Почему пропускаются breakpints-ы?


15-1152871615
DevilDevil
2006-07-14 14:06
2006.08.13
Локальные переменные в C++





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский