Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.55 MB
Время: 0.027 c
15-1152793731
Yeg
2006-07-13 16:28
2006.08.13
Siemens AT Commands


15-1152868726
Сергей М.
2006-07-14 13:18
2006.08.13
TurboPower AsyncPro


15-1153239518
Kerk
2006-07-18 20:18
2006.08.13
Неофициальный news-сервер FIDO


2-1153996435
Crazy monkey
2006-07-27 14:33
2006.08.13
Вопрос по фильтру


2-1153481890
WolfRamm
2006-07-21 15:38
2006.08.13
SQL Explorer




   Наверх