powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Неочевидность ответа на простой вопрос по домену с CHECK
25 сообщений из 38, страница 1 из 2
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554318
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, форумяне - есть две переменных одинакового домена с CHECK. Когда значение одной переменной присваивается другой, CHECK будет отрабатывает или же, с целью быстродействия, сервер считает, что значение уже проверено и надобности в повторной проверки нет?
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554327
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что, и версию метаданных проверять?
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554336
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery, вообще-то, я ожидал ответ... :)
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554352
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery, я правильно тебя понял - CHECK будет отрабатывать всегда, чтобы не зависеть от версии метаданных?
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554359
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

Я не знаю, есть ли такая оптимизация, пусть более осведомлённые коллеги ответят.
Мне только кажется это очень сомнительным из-за сложностей реализации и малой нужды в такой оптимизации.
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554520
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev> сервер считает, что значение уже проверено и надобности в повторной проверки нет?

Конечно, повторно проверяется. И нельзя не проверять.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554614
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

допустим, ты сначала вбил данные, а потом наложил check, который часть этих данных не пропустил бы.
Это раз. Два - check проверяется при присваивании. Зачем сервер в этот момент будет проверять, ЧТО присваивается, и с таким же check, или нет? Это нонсенс какой-то.
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554623
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> допустим, ты сначала вбил данные, а потом наложил check

Для переменной? Это как это?

> Зачем сервер в этот момент будет проверять, ЧТО присваивается,
> и с таким же check, или нет? Это нонсенс какой-то.

Я вам даже больше скажу - даже если бы он знал, что на
том конце тоже правильное предварительно зачеканное -
он всё равно должен проверить. И я не шучу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554625
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати да, достаточно в CHECK-условие ввести нечистую функцию, некий чёрный ящик, обращающийся ко внешнему контексту (например дате-времени, или курсу валюты), и одно и то же значения может в разное время проходить проверку и проваливать.

ЗАЧЕМ такое делать - вопрос отдельный, и не серверу его решать.
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554626
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да даже без внешних источников *.

P.S. * по отношению к БД. В отношении чека -
все что за пределами value - внешнее, по сути.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554849
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо!
Так как мне достаточно только одной проверки, нужно было понять - стоит ли дополнительно вводить дереватив домена без CHECK.

В моем, конкретном, случае, никаких внешних условий нет, а есть составной идентификатор BIGINT, вычисляемый по определенному правилу. В CHECK прописана процедура, проверяющая соответствие условиям формирования идентификатора, но одно дело - сформировать идентификатор разово, при создании записи оператором, а другое - нагружать сервер проверкой идентификаторов данного домена на поле с внешним ключом, при высокой интенсивности вставки записей в таблицу.
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554859
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochКстати да, достаточно в CHECK-условие ввести нечистую функцию, некий чёрный ящик, обращающийся ко внешнему контексту (например дате-времени, или курсу валюты), и одно и то же значения может в разное время проходить проверку и проваливать.

ЗАЧЕМ такое делать - вопрос отдельный, и не серверу его решать.В MySQL, к примеру, для хранимых процедур/функций есть опция DETERMINISTIC, позволяющая разработчику указать серверу, что в любой момент времени и для одних и тех же параметров, значение функции принимает одни и те же значения.
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554867
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

в Firebird тоже есть для функций, но работает только когда параметров нет (увы).
Для процедур это не реально, по другому они у нас работают
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554875
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev> стоит ли дополнительно вводить дереватив домена без CHECK.

Стоит перестать фигнёй маяться.

> BIGINT, вычисляемый по определенному правилу.
> В CHECK прописана процедура, проверяющая соответствие
> условиям формирования идентификатора, но одно дело -
> сформировать идентификатор разово, при создании записи

CHECK не создаёт (хотя может, в принципе, если очень
сильно извернуться), CHECK проверяет. Соответственно,
если "разово и дальше не нужно, не меняется" - CHECK
не нужен, достаточно процедуры. Если не только лишь
разово и может меняться - CHECK нужен на каждый чих.
Конкретно на время массовой заливки "CHECK" можно и
отключить, временно (совсем или для этой заливки).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554882
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, может, всё таки, для внешнего ключа проще создать домен-дереватив без CHECK, при том, что в зависимую таблицу данные валят интенсивно и не переставая?
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554949
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev> может, всё таки, для внешнего ключа проще создать домен-дереватив без CHECK
rdb_dev> при том, что в зависимую таблицу данные валят интенсивно и не переставая?

Во-первых, если ты думаешь, что использование умных буржуйских слов
(особенно, когда есть более привычные термины, в т.ч. на русском языке)
добавит тебе весомости, сделает твою речь понятнее, а жизнь приятнее -
ты ошибаешься. Отнюдь, весьма, не только лишь всегда. (с)

Во-вторых, CHECK никаким боком не относится (в т.ч. не проверяется)
к внешим ключам (я говорю о поле, на которое ссылаются FK, а не сами
FK-поля дочерних таблиц, конечно). Если же ты собрался на FK-поле
дочерней таблицы CHECK повесить, то технически это можно, конечно,
но практически трудно обосновать этот вывих логики.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554962
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

какую-то мутную хрень обсуждаешь. CHECK всегда проверяется при присваивании полю или переменной и абсолютно всё равно что и чем там до этого проверялось. И это правильно. Не нужна такая проверка на каждый чих, тогда и не ставь CHECK на домен. Проверяй правильность в триггере.

А уж пихать в CHECK SELECT или ХП кривизна сама по себе. Хранимую функцию можно, но она должна быть относительно простой, детерминированной и без побочных эффектов.

То что сервер предоставляет возможность засунуть в CHECK всё что угодно это хорошо, но вовсе не обязательно этим пользоваться. Иногда мозг надо включать.
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554974
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамrdb_dev> может, всё таки, для внешнего ключа проще создать домен-дереватив без CHECK
rdb_dev> при том, что в зависимую таблицу данные валят интенсивно и не переставая?

Во-первых, если ты думаешь, что использование умных буржуйских слов
(особенно, когда есть более привычные термины, в т.ч. на русском языке)
добавит тебе весомости, сделает твою речь понятнее, а жизнь приятнее -
ты ошибаешься. Отнюдь, весьма, не только лишь всегда. (с)То есть, когда ты употребляешь это слово в отношении подзапросов в соединениях оператора SELECT, то это нормально, а когда я употребляю это слово в более широком его смысле, то я выпендриваюсь? Сказочно...

Гаджимурадов РустамВо-вторых, CHECK никаким боком не относится (в т.ч. не проверяется)
к внешим ключам (я говорю о поле, на которое ссылаются FK, а не сами
FK-поля дочерних таблиц, конечно). Если же ты собрался на FK-поле
дочерней таблицы CHECK повесить, то технически это можно, конечно,
но практически трудно обосновать этот вывих логики.Трудно обосновать использование одного и того же домена для полей первичного и вторичного ключей? Сам-то понял, что сказал?
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554978
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> Не нужна такая проверка на каждый чих, тогда и не ставь
Симонов Денис> CHECK на домен. Проверяй правильность в триггере.

Можно и на само поле, в принципе.

> То что сервер предоставляет возможность засунуть в CHECK всё
> что угодно это хорошо, но вовсе не обязательно этим пользоваться.

Усложнив - победим! (с) Заодно повысим энтропию, ЧСВ
и служебную значимость (последнее - может и понизиться).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554990
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже подумал о проверке в триггере, раз больше нигде не надо, кроме первичного заполнения.
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554991
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev> То есть, когда ты употребляешь это слово в отношении подзапросов
rdb_dev> в соединениях оператора SELECT, то это нормально

Ась? Я использовал слово "дереватив" (через "и" правильо пишется, кстати)
"в отношении подзапросов оператора SELECT"? Шариков, Вы никак рехнулись?

> Трудно обосновать использование одного и того же домена для полей
> первичного и вторичного ключей? Сам-то понял, что сказал?

Конечно, понял. Домен-домену - рознь, как я уже сказал выше - вешай CHECK
не на домен, а на поле. Чисто теоретически, можешь ещё в трекере type of column
для таблиц попросить, но я сомневаюсь, что эта фича будет иметь высокий
приоритет у Кальтенбруннера (а у остальных - и подавно).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39554998
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery> Я тоже подумал о проверке в триггере, раз больше нигде не надо, кроме первичного заполнения.

Я вам даже больше скажу - если только первичное заполнение -
и проверять нечего, только ХПшку/функцию дернуть один раз
и всё (или даже без неё обойтись, если алгоритм несложный).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39555050
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамrdb_dev> То есть, когда ты употребляешь это слово в отношении подзапросов
rdb_dev> в соединениях оператора SELECT, то это нормально

Ась? Я использовал слово "дереватив" (через "и" правильо пишется, кстати)Да, через "и", но, как я вижу, ты понял о чем идет речь.

Гаджимурадов Рустам"в отношении подзапросов оператора SELECT"? Шариков, Вы никак рехнулись?Кто же тебя, чудака, модератором назначил?
За твои "способности" к общению и переход на личности тебя надо банить навечно.

Гаджимурадов Рустам> Трудно обосновать использование одного и того же домена для полей
> первичного и вторичного ключей? Сам-то понял, что сказал?

Конечно, понял. Домен-домену - рознь, как я уже сказал выше - вешай CHECK
не на домен, а на поле. Чисто теоретически, можешь ещё в трекере type of column
для таблиц попросить, но я сомневаюсь, что эта фича будет иметь высокий
приоритет у Кальтенбруннера (а у остальных - и подавно).
В хранимых процедурах мне CHECK тоже на "поле" вешать или же ты предлагаешь не забыть во всех ХП дополнительно прописать вызов процедуры проверки, а потом отлавливать баги, если где-то забыл прописать?

Узбагойзя! Я получил ответ на свой вопрос и все твои потуги - лирика.
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39555055
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev> Да

Ссылку в студию! :)

> В хранимых процедурах мне CHECK тоже на "поле" вешать

Нет, конечно. RTFM type of domain/column.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неочевидность ответа на простой вопрос по домену с CHECK
    #39555061
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамСсылку в студию! :) Не проблема...
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Неочевидность ответа на простой вопрос по домену с CHECK
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]