|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Подскажите, форумяне - есть две переменных одинакового домена с CHECK. Когда значение одной переменной присваивается другой, CHECK будет отрабатывает или же, с целью быстродействия, сервер считает, что значение уже проверено и надобности в повторной проверки нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 13:44 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Что, и версию метаданных проверять? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 13:58 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
WildSery, вообще-то, я ожидал ответ... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 14:11 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
WildSery, я правильно тебя понял - CHECK будет отрабатывать всегда, чтобы не зависеть от версии метаданных? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 14:21 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
rdb_dev, Я не знаю, есть ли такая оптимизация, пусть более осведомлённые коллеги ответят. Мне только кажется это очень сомнительным из-за сложностей реализации и малой нужды в такой оптимизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 14:26 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
rdb_dev> сервер считает, что значение уже проверено и надобности в повторной проверки нет? Конечно, повторно проверяется. И нельзя не проверять. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 17:11 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
rdb_dev, допустим, ты сначала вбил данные, а потом наложил check, который часть этих данных не пропустил бы. Это раз. Два - check проверяется при присваивании. Зачем сервер в этот момент будет проверять, ЧТО присваивается, и с таким же check, или нет? Это нонсенс какой-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 18:22 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
kdv> допустим, ты сначала вбил данные, а потом наложил check Для переменной? Это как это? > Зачем сервер в этот момент будет проверять, ЧТО присваивается, > и с таким же check, или нет? Это нонсенс какой-то. Я вам даже больше скажу - даже если бы он знал, что на том конце тоже правильное предварительно зачеканное - он всё равно должен проверить. И я не шучу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 18:37 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Кстати да, достаточно в CHECK-условие ввести нечистую функцию, некий чёрный ящик, обращающийся ко внешнему контексту (например дате-времени, или курсу валюты), и одно и то же значения может в разное время проходить проверку и проваливать. ЗАЧЕМ такое делать - вопрос отдельный, и не серверу его решать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 18:44 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Да даже без внешних источников *. P.S. * по отношению к БД. В отношении чека - все что за пределами value - внешнее, по сути. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 18:48 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Всем спасибо! Так как мне достаточно только одной проверки, нужно было понять - стоит ли дополнительно вводить дереватив домена без CHECK. В моем, конкретном, случае, никаких внешних условий нет, а есть составной идентификатор BIGINT, вычисляемый по определенному правилу. В CHECK прописана процедура, проверяющая соответствие условиям формирования идентификатора, но одно дело - сформировать идентификатор разово, при создании записи оператором, а другое - нагружать сервер проверкой идентификаторов данного домена на поле с внешним ключом, при высокой интенсивности вставки записей в таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 09:28 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
AriochКстати да, достаточно в CHECK-условие ввести нечистую функцию, некий чёрный ящик, обращающийся ко внешнему контексту (например дате-времени, или курсу валюты), и одно и то же значения может в разное время проходить проверку и проваливать. ЗАЧЕМ такое делать - вопрос отдельный, и не серверу его решать.В MySQL, к примеру, для хранимых процедур/функций есть опция DETERMINISTIC, позволяющая разработчику указать серверу, что в любой момент времени и для одних и тех же параметров, значение функции принимает одни и те же значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 09:40 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
rdb_dev, в Firebird тоже есть для функций, но работает только когда параметров нет (увы). Для процедур это не реально, по другому они у нас работают ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 09:52 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
rdb_dev> стоит ли дополнительно вводить дереватив домена без CHECK. Стоит перестать фигнёй маяться. > BIGINT, вычисляемый по определенному правилу. > В CHECK прописана процедура, проверяющая соответствие > условиям формирования идентификатора, но одно дело - > сформировать идентификатор разово, при создании записи CHECK не создаёт (хотя может, в принципе, если очень сильно извернуться), CHECK проверяет. Соответственно, если "разово и дальше не нужно, не меняется" - CHECK не нужен, достаточно процедуры. Если не только лишь разово и может меняться - CHECK нужен на каждый чих. Конкретно на время массовой заливки "CHECK" можно и отключить, временно (совсем или для этой заливки). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 10:02 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, может, всё таки, для внешнего ключа проще создать домен-дереватив без CHECK, при том, что в зависимую таблицу данные валят интенсивно и не переставая? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 10:09 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
rdb_dev> может, всё таки, для внешнего ключа проще создать домен-дереватив без CHECK rdb_dev> при том, что в зависимую таблицу данные валят интенсивно и не переставая? Во-первых, если ты думаешь, что использование умных буржуйских слов (особенно, когда есть более привычные термины, в т.ч. на русском языке) добавит тебе весомости, сделает твою речь понятнее, а жизнь приятнее - ты ошибаешься. Отнюдь, весьма, не только лишь всегда. (с) Во-вторых, CHECK никаким боком не относится (в т.ч. не проверяется) к внешим ключам (я говорю о поле, на которое ссылаются FK, а не сами FK-поля дочерних таблиц, конечно). Если же ты собрался на FK-поле дочерней таблицы CHECK повесить, то технически это можно, конечно, но практически трудно обосновать этот вывих логики. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 11:32 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
rdb_dev, какую-то мутную хрень обсуждаешь. CHECK всегда проверяется при присваивании полю или переменной и абсолютно всё равно что и чем там до этого проверялось. И это правильно. Не нужна такая проверка на каждый чих, тогда и не ставь CHECK на домен. Проверяй правильность в триггере. А уж пихать в CHECK SELECT или ХП кривизна сама по себе. Хранимую функцию можно, но она должна быть относительно простой, детерминированной и без побочных эффектов. То что сервер предоставляет возможность засунуть в CHECK всё что угодно это хорошо, но вовсе не обязательно этим пользоваться. Иногда мозг надо включать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 11:42 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамrdb_dev> может, всё таки, для внешнего ключа проще создать домен-дереватив без CHECK rdb_dev> при том, что в зависимую таблицу данные валят интенсивно и не переставая? Во-первых, если ты думаешь, что использование умных буржуйских слов (особенно, когда есть более привычные термины, в т.ч. на русском языке) добавит тебе весомости, сделает твою речь понятнее, а жизнь приятнее - ты ошибаешься. Отнюдь, весьма, не только лишь всегда. (с)То есть, когда ты употребляешь это слово в отношении подзапросов в соединениях оператора SELECT, то это нормально, а когда я употребляю это слово в более широком его смысле, то я выпендриваюсь? Сказочно... Гаджимурадов РустамВо-вторых, CHECK никаким боком не относится (в т.ч. не проверяется) к внешим ключам (я говорю о поле, на которое ссылаются FK, а не сами FK-поля дочерних таблиц, конечно). Если же ты собрался на FK-поле дочерней таблицы CHECK повесить, то технически это можно, конечно, но практически трудно обосновать этот вывих логики.Трудно обосновать использование одного и того же домена для полей первичного и вторичного ключей? Сам-то понял, что сказал? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 11:47 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Симонов Денис> Не нужна такая проверка на каждый чих, тогда и не ставь Симонов Денис> CHECK на домен. Проверяй правильность в триггере. Можно и на само поле, в принципе. > То что сервер предоставляет возможность засунуть в CHECK всё > что угодно это хорошо, но вовсе не обязательно этим пользоваться. Усложнив - победим! (с) Заодно повысим энтропию, ЧСВ и служебную значимость (последнее - может и понизиться). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 11:50 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Я тоже подумал о проверке в триггере, раз больше нигде не надо, кроме первичного заполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 12:05 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
rdb_dev> То есть, когда ты употребляешь это слово в отношении подзапросов rdb_dev> в соединениях оператора SELECT, то это нормально Ась? Я использовал слово "дереватив" (через "и" правильо пишется, кстати) "в отношении подзапросов оператора SELECT"? Шариков, Вы никак рехнулись? > Трудно обосновать использование одного и того же домена для полей > первичного и вторичного ключей? Сам-то понял, что сказал? Конечно, понял. Домен-домену - рознь, как я уже сказал выше - вешай CHECK не на домен, а на поле. Чисто теоретически, можешь ещё в трекере type of column для таблиц попросить, но я сомневаюсь, что эта фича будет иметь высокий приоритет у Кальтенбруннера (а у остальных - и подавно). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 12:05 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
WildSery> Я тоже подумал о проверке в триггере, раз больше нигде не надо, кроме первичного заполнения. Я вам даже больше скажу - если только первичное заполнение - и проверять нечего, только ХПшку/функцию дернуть один раз и всё (или даже без неё обойтись, если алгоритм несложный). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 12:08 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамrdb_dev> То есть, когда ты употребляешь это слово в отношении подзапросов rdb_dev> в соединениях оператора SELECT, то это нормально Ась? Я использовал слово "дереватив" (через "и" правильо пишется, кстати)Да, через "и", но, как я вижу, ты понял о чем идет речь. Гаджимурадов Рустам"в отношении подзапросов оператора SELECT"? Шариков, Вы никак рехнулись?Кто же тебя, чудака, модератором назначил? За твои "способности" к общению и переход на личности тебя надо банить навечно. Гаджимурадов Рустам> Трудно обосновать использование одного и того же домена для полей > первичного и вторичного ключей? Сам-то понял, что сказал? Конечно, понял. Домен-домену - рознь, как я уже сказал выше - вешай CHECK не на домен, а на поле. Чисто теоретически, можешь ещё в трекере type of column для таблиц попросить, но я сомневаюсь, что эта фича будет иметь высокий приоритет у Кальтенбруннера (а у остальных - и подавно). В хранимых процедурах мне CHECK тоже на "поле" вешать или же ты предлагаешь не забыть во всех ХП дополнительно прописать вызов процедуры проверки, а потом отлавливать баги, если где-то забыл прописать? Узбагойзя! Я получил ответ на свой вопрос и все твои потуги - лирика. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 13:07 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
rdb_dev> Да Ссылку в студию! :) > В хранимых процедурах мне CHECK тоже на "поле" вешать Нет, конечно. RTFM type of domain/column. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 13:15 |
|
Неочевидность ответа на простой вопрос по домену с CHECK
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамСсылку в студию! :) Не проблема... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 13:34 |
|
|
start [/forum/topic.php?fid=40&fpage=39&tid=1561333]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 307ms |
total: | 443ms |
0 / 0 |