|
Тема
|
Triggers
|
|
Автор | DayDio (Нерегистриран) |
Публикувано | 05.07.05 20:45 |
|
В база данни имам 3 таблици с по 1 тригер (всеки, от които генерира уникално число за колоната ID във всяка от таблиците)
Когато въвеждам и трия записи и в 3-те таблици стойността на ID може да съвпадне и тогава ми дава грешка (числото в ID трябва да бъде различно от числата в 3-те таблици)
Какво трябва да направя за да не става така? (използвам Interbase 6.0)
| |
Тема
|
Re: Triggers
[re: DayDio]
|
|
Автор |
NDeu (динозавър) |
Публикувано | 05.07.05 21:51 |
|
Вероятно, въпреки твоето желание, не генерираш уникален идентификатор, щом може да съвпадне
Компютъра не прави това което искаш, а това което му заповядаш
А какво точно правиш и каква грешка ти дава ... не мога да позная![](http://i.dirbg.com/clubs/icons/crazy.gif)
| |
Тема
|
Re: Triggers
[re: NDeu]
|
|
Автор | DayDio (Нерегистриран) |
Публикувано | 06.07.05 01:04 |
|
Дава ми грешка тъй като намира съвпадение на числото 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)
| |
Тема
|
Re: Triggers
[re: DayDio]
|
|
Автор |
NDeu (динозавър) |
Публикувано | 06.07.05 16:35 |
|
Като гледам колко въпроси си задал в последно време, оставам с впечатлението че си решил, че можеш да се научиш само като питаш по форумите.
Имай предвид, че това е почти невъзможна мисия, ако ти се губят основни елементи. Вземи прочети документацията и публикуваните статии по въпроса и когато нещо остане неясно, тогава можеш да потърсиш помощ с конкретни въпроси. В противен случай, както вече ти бяха казали в една тема, почва да става досадно
Някой беше ти дал линк към
Можеш да си изтеглиш и
Успех и
| |
Тема
|
Re: Triggers
[re: DayDio]
|
|
Автор |
Vermax (киликанзер) |
Публикувано | 06.07.05 16:46 |
|
Joker:
използвай общ генератор за 3-те таблици. Това ти гарантира уникалност в трите таблици ![](http://i.dirbg.com/clubs/icons/cool.gif)
| |
Тема
|
Re: Triggers
[re: DayDio]
|
|
Автор |
NDeu (динозавър) |
Публикувано | 06.07.05 17:00 |
|
Правиш ли разлика между тригер и генератор, идентификатор и индекс.
По примера, който си дал не може да се каже каква грешка и къде ти я дава. В такива случаи е добре да даваш извадка на същественото от метаданните. Таблиците, какви индекси имат, какви констрейнти, тригери.
Уникални стойности можеш да генерираш по различни начини. Преди известно време имаше бурна и обемна дискусия по въпроса. Можеш да я потърсиш.
Ето ти един от най-често използваните:
Ако имаш
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
^
| |
|
пробвай 3-те таблици с един генератор
| |
|
|
|
|