Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Валидность данных в одной строке и одной таблице.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть таблица Invoices (счета) и соответственно есть InvoicesDetailes (позиции товаров в счете). В каждой строке InvoicesDetailes есть куча правил на Update, которые приходится проверять триггерами, например, 1. QTY > 0 2. QTY_Ready >= 0 (собрано или уже готово комплектов на складе) 3. QTY >= QTY_Ready 4. Д.б. QTY_Ready = 0 если IsComplect=0 (IsComplect - bit поле, говорит о том, что д.б. сборка ... на складе) 5. Если IsComplect=1, то 6. и т.д. много всего. Т.е. простая валидность данных в одной строке и одной и таблице по данным разных полей. -- Вопрос: проверять всё триггерами или есть альтернатива? -- Правильно ли будет создать поле ValidReq (Computed Column Sp.), написать функцию InvoicesDetailes_ValidReq() для него. В этой функции делать все проверки, а триггер смотрит только на ValidReq = True ? ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 12:43 |
|
||
|
Валидность данных в одной строке и одной таблице.
|
|||
|---|---|---|---|
|
#18+
Триггеры или CONSTRAINT <ИмяКонстрейнта> CHECK(...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 12:49 |
|
||
|
Валидность данных в одной строке и одной таблице.
|
|||
|---|---|---|---|
|
#18+
LightNТ.е. простая валидность данных в одной строке и одной и таблице по данным разных полей. -- Вопрос: проверять всё триггерами или есть альтернатива? -- Правильно ли будет создать поле ValidReq (Computed Column Sp.), написать функцию InvoicesDetailes_ValidReq() для него. В этой функции делать все проверки, а триггер смотрит только на ValidReq = True ?Ио есть проверка в пределах одной строки одной таблицы? Тогда CHECK CONSTRAINT, как уже посоветовали. LightNПравильно ли будет создать поле ValidReq (Computed Column Sp.), написать функцию InvoicesDetailes_ValidReq() для него. В этой функции делать все проверки, а триггер смотрит только на ValidReq = True ?Если уж писать функцию, то можно вставить её тоже в чек-констрейн, если триггер не нужен для других целей. Если нужен, то лучше в него, что бы не размазывать логику по куче мест. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 14:03 |
|
||
|
Валидность данных в одной строке и одной таблице.
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Это Да! Но ... У CHECK CONSTRAINT есть минус (или я просто не в курсе) - клиенту с ошибкой ничего вразумительного не передается, как например, Код: sql 1. О, пока писал, сам придумал: 1-н TRIGGER, 1-о УСЛОВИЕ, 1-н ROLLBACK TRAN, а на RAISERROR просто сделать CASE и через него передавать клиенту сообщение, в зависимости от того как сработал ROLLBACK TRAN. Спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 14:54 |
|
||
|
Валидность данных в одной строке и одной таблице.
|
|||
|---|---|---|---|
|
#18+
LightNalexeyvg, Это Да! Но ... У CHECK CONSTRAINT есть минус (или я просто не в курсе) - клиенту с ошибкой ничего вразумительного не передается, как например, Код: sql 1. О, пока писал, сам придумал: 1-н TRIGGER, 1-о УСЛОВИЕ, 1-н ROLLBACK TRAN, а на RAISERROR просто сделать CASE и через него передавать клиенту сообщение, в зависимости от того как сработал ROLLBACK TRAN. Спасибо за ответ.CONSTRAINT можно назвать [Нельзя собрать комплектов больше чем в позиции счета!]. А имя констрейнта упоминается в сообщении сервера. Кроме того, имя (любое) констрейнта можно проверять на клиенте и формировать там соответсвующий текст сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 14:57 |
|
||
|
Валидность данных в одной строке и одной таблице.
|
|||
|---|---|---|---|
|
#18+
iapCONSTRAINT можно назвать [Нельзя собрать комплектов больше чем в позиции счета!]. А имя констрейнта упоминается в сообщении сервера. Кроме того, имя (любое) констрейнта можно проверять на клиенте и формировать там соответсвующий текст сообщения. CONSTRAINT можно назвать [Нельзя собрать комплектов больше чем в позиции счета!]. Это здорово! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 15:36 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1690418]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 315ms |

| 0 / 0 |
