Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Используя ЗАБОЙ, полю присваивается 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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.047 c
2-1153923540
Dmitry_177
2006-07-26 18:19
2006.08.13
Клавиатурный шпион


15-1152786067
Игорь М
2006-07-13 14:21
2006.08.13
Трафик инета


2-1153736526
Frojok
2006-07-24 14:22
2006.08.13
Закрыть приложение


15-1149183547
tesseract
2006-06-01 21:39
2006.08.13
футболка DelphiMaster


3-1149574047
q-q
2006-06-06 10:07
2006.08.13
Используя ЗАБОЙ, полю присваивается NULL, а хотелось бы НОЛЬ