Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Вниз

Ограничения реализованные в триггерах (чисто теоретически)   Найти похожие ветки 

 
Некто   (2005-01-20 23:55) [0]

возьмём к примеру таблицу:

create table sotr
(
 kod_sotr smallint not null primary key,
 tab_nom numeric(7,0) not null unique,
 fio varchar(50) not null
);


в этом случае сервер сам проверяет условия вставки(изменения) записи, а если сделать так:

create table sotr
(
 kod_sotr smallint,
 tab_nom numeric(7,0),
 fio varchar(50)
);

create unique index idx_sotr on memory (kod_sotr);


и потом проверять значения на "not null" и "unique" в ТРИГГЕРАХ before insert и before update.

как отразится ЭТО на быстродействии сервера? скорее всего почти никак, я прав?


 
Johnmen ©   (2005-01-21 09:21) [1]

>я прав?

Да. Но первый вариант более правильный идеологически.


 
Deniz   (2005-01-21 09:28) [2]

Те же яйца, только вид сбоку
Только вот я не понял, причем здесь:
create unique index idx_sotr on memory?


 
Johnmen ©   (2005-01-21 09:34) [3]

Deniz   (21.01.05 09:28) [2]

Это имя таблицы...:)))


 
Некто   (2005-01-21 09:37) [4]

>Это имя таблицы...:)))
да, малясь перепутал :-))
просто из разных кусков соеденил сей пример)))


 
Deniz   (2005-01-21 09:43) [5]

>Johnmen ©   (21.01.05 09:34) [3]
Я сразу понял намек
Я все ловлю на лету
Но не понятно, что конкренто ... (с)


 
Sergey13 ©   (2005-01-21 09:43) [6]

ИМХО.
Делать тригер вместо стандартного констрейнта можно если стандартной функциональности не хватает. Все другое от лукавого.


 
Desdechado ©   (2005-01-21 10:51) [7]

1. триггер можно временно отключать, в результате все твои псевдо-констрайнты ничего не стОят
2. ИМХО, запрос внутри триггера для проверки уникальности дольше, чем реализованная движком проверка уникальности на индексе


 
Sergey13 ©   (2005-01-21 10:54) [8]

2[7] Desdechado ©   (21.01.05 10:51)
>1.
Гораздо опаснее, если тригер "выключится сам" и этого никто не заметит.


 
Zlod3y ©   (2005-01-21 11:58) [9]

>Гораздо опаснее, если тригер "выключится сам" и этого никто не заметит.

такое возможно?


 
Zlod3y ©   (2005-01-21 11:58) [10]

>Гораздо опаснее, если тригер "выключится сам" и этого никто не заметит.

такое возможно?


 
Sergey13 ©   (2005-01-21 12:12) [11]

2[10] Zlod3y ©   (21.01.05 11:58)
>такое возможно?
На ИБ у меня такое было как то после ресторе. Все вроде прошло нормально, а вот пара тригеров (там помнится были ссылки на UDF вроде) была инвалидна.
На Оракле (в сабже стоит - теоретически) такое получается если меняются структуры упоминаемых в тригере объектов. Надо перекомпилировать обязательно.


 
Zlod3y ©   (2005-01-21 13:30) [12]

видимо тему можно закрыть
http://forum.ibase.ru/phpBB2/viewtopic.php?t=322


 
kaif ©   (2005-01-22 02:08) [13]

Нельзя в триггере проверять уникальность. Индекс работает вне контекста транзакции, а триггер - в контексте транзакции. Поэтому если два юзера стартуют каждый свою транзакцию ReadCommitted, а затем каждый из них вставляет одну и ту же величину, триггер каждого из них будет считать, что уникальность не нарушена. Затем после Commit обе записи будут подтверждены и в базе возникнут дубликаты. Если же имеются уникальные индексы или констрейнты (это уже неважно), то сервер не даст создать такие дубликаты, так как индексы работают вне контекста транзакций. Вне контекста транзакций работают еще и генераторы. Именно поэтому их юзают в качестве источников суррогатных ключей.


 
Johnmen ©   (2005-01-22 02:22) [14]

>kaif ©  (22.01.05 02:08) [13]

Ему про это уже объяснили на sql.ru :)))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.037 c
3-1106220984
Layner
2005-01-20 14:36
2005.02.20
Разделители дроби в MSSQL на сервере и разделитель на клиенте


1-1107468100
Назаров Евгений
2005-02-04 01:01
2005.02.20
чтение из Excel таблиц в фоновом режиме


1-1107280449
SaveDialog123
2005-02-01 20:54
2005.02.20
SaveDialog


1-1107275184
creage
2005-02-01 19:26
2005.02.20
Как обвести выделенный объект в TListView?


14-1107117278
Yuri Btr
2005-01-30 23:34
2005.02.20
глюки форума





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский