Triggers

6 отговора 675 прегледа
#1

Triggers

В база данни имам 3 таблици с по 1 тригер (всеки, от които генерира уникално число за колоната ID във всяка от таблиците)
Когато въвеждам и трия записи и в 3-те таблици стойността на ID може да съвпадне и тогава ми дава грешка (числото в ID трябва да бъде различно от числата в 3-те таблици)
Какво трябва да направя за да не става така? (използвам Interbase 6.0)

Отговор
в отговор на DayDio #2

Re: Triggers

Вероятно, въпреки твоето желание, не генерираш уникален идентификатор, щом може да съвпадне

Компютъра не прави това което искаш, а това което му заповядаш

А какво точно правиш и каква грешка ти дава ... не мога да позная

Отговор
в отговор на NDeu #3

Re: Triggers

Дава ми грешка тъй като намира съвпадение на числото 10 (намира 2 стойности 10) - а те са в различни таблици)
т1 т2 т3
ID ID ID
1 6 10
2 7 11
3 8 12
4 9 13
5 10 14

Ще ви бъда благодарен ако ми напишите генератор за уникален индекс
(в Interbase 6.0)

Отговор
в отговор на DayDio #4

Re: Triggers

Като гледам колко въпроси си задал в последно време, оставам с впечатлението че си решил, че можеш да се научиш само като питаш по форумите.
Имай предвид, че това е почти невъзможна мисия, ако ти се губят основни елементи. Вземи прочети документацията и публикуваните статии по въпроса и когато нещо остане неясно, тогава можеш да потърсиш помощ с конкретни въпроси. В противен случай, както вече ти бяха казали в една тема, почва да става досадно
Някой беше ти дал линк към [линк]
Можеш да си изтеглиш и
Базовый каталог с индексом для Search.
Getting Started - тут все ясно
Operations Guide - основная книга. Настройки, сеть, миграция и т.п.
Data Definition Guide - руководство по созданию баз данных
Language Reference - руководство по языку. Весь синтаксис SQL.
Developers Guide - программирование на Delphi с IBX. Устарело.
Embedded SQL Guide - только если вы используете GPRE.
API Guide - работа с IB через интерфейс gds32.dll.

Успех и



Отговор
в отговор на DayDio #5

Re: Triggers

Joker:

използвай общ генератор за 3-те таблици. Това ти гарантира уникалност в трите таблици

Отговор
в отговор на DayDio #6

Re: Triggers

Правиш ли разлика между тригер и генератор, идентификатор и индекс.
По примера, който си дал не може да се каже каква грешка и къде ти я дава. В такива случаи е добре да даваш извадка на същественото от метаданните. Таблиците, какви индекси имат, какви констрейнти, тригери.

Уникални стойности можеш да генерираш по различни начини. Преди известно време имаше бурна и обемна дискусия по въпроса. Можеш да я потърсиш.
Ето ти един от най-често използваните:
Ако имаш
CREATE TABLE MY_TABLE (

ID INTEGER NOT NULL,
SOMETHING VARCHAR(10)
);
/*********************************************/
/*** Primary Keys ***/
/*********************************************/
ALTER TABLE MY_TABLE ADD CONSTRAINT PK_MY_TABLE PRIMARY KEY (ID);
/********************************************/
/*** Triggers ***/
/********************************************/
SET TERM ^ ;
/***********************************************/
/*** Triggers for tables ***/
/***********************************************/
/* Trigger: MY_TABLE_BI0 */
CREATE TRIGGER MY_TABLE_BI0 FOR MY_TABLE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if (new.id is null) then new.id=gen_id(g_my_table_id,1);
end
^


Отговор
в отговор на DayDio #7

Re: Triggers

пробвай 3-те таблици с един генератор

Отговор