Форум: "Базы";
Текущий архив: 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