CREATE TABLE PRIH_INS (
ORD_NOM BIGINT NOT NULL,
NOMENK_NUMB BIGINT,
KOL_INS_PRIH BIGINT,
CENA_ZA_ED NUMERIC(15,2),
DATA TIMESTAMP,
NAIM_POST VARCHAR(30),
NOM_PRIH VARCHAR(10) NOT NULL /*Поле связанное первичным ключом с полем NOM_RASH с таблицей Расхода*/
);
/*Добавление первичного ключа на поле NOM_PRIH */
ALTER TABLE PRIH_INS ADD CONSTRAINT PK_PRIH_INS PRIMARY KEY (NOM_PRIH);
Связка полей - (Первичный ->Внешний) ключи
FB2.0
Таблица Прихода
Скрипт:
Код:
Код:
/*Тригер для вставки в поле (NOM_PRIH) уникальную строку!!!
/* Trigger: PRIH_INS_BI0 */
CREATE TRIGGER PRIH_INS_BI0 FOR PRIH_INS
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable i varchar(10);
declare variable i1 varchar(2);
declare variable data date;
begin
/* Trigger text */
if (new.ord_nom is null) then
new.ord_nom=gen_id(gen_prih,1);
data='now';
i=cast(data as varchar(10));
i1=substr(i,3,4);
if (new.nom_prih is null) then
new.nom_prih=i1||'_'||cast(gen_id(gen_prih_nom,1) as varchar(6));
end
^
SET TERM ; ^
/* Trigger: PRIH_INS_BI0 */
CREATE TRIGGER PRIH_INS_BI0 FOR PRIH_INS
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable i varchar(10);
declare variable i1 varchar(2);
declare variable data date;
begin
/* Trigger text */
if (new.ord_nom is null) then
new.ord_nom=gen_id(gen_prih,1);
data='now';
i=cast(data as varchar(10));
i1=substr(i,3,4);
if (new.nom_prih is null) then
new.nom_prih=i1||'_'||cast(gen_id(gen_prih_nom,1) as varchar(6));
end
^
SET TERM ; ^
------------------------------------------------------------------------
Таблица Расхода
Скрипт:
Код:
CREATE TABLE RASH_INS (
ORD_NUM BIGINT,
NOMENK_NUMB BIGINT,
KOL_INS_RASH BIGINT,
RASH_FACT BIGINT,
DATA TIMESTAMP,
NOM_CEH VARCHAR(30),
NOM_RASH VARCHAR(10) NOT NULL /*Поле связанное внешним ключом с полем NOM_PRIH с таблицей Прихода*/
);
ALTER TABLE RASH_INS ADD CONSTRAINT UNQ1_RASH_INS UNIQUE (NOM_RASH);
/*Добавление внешнего ключа на поле (NOM_RASH) */
ALTER TABLE RASH_INS ADD CONSTRAINT FK_RASH_INS_2 FOREIGN KEY (NOM_RASH) REFERENCES PRIH_INS (NOM_PRIH);
SET TERM ^ ;
ORD_NUM BIGINT,
NOMENK_NUMB BIGINT,
KOL_INS_RASH BIGINT,
RASH_FACT BIGINT,
DATA TIMESTAMP,
NOM_CEH VARCHAR(30),
NOM_RASH VARCHAR(10) NOT NULL /*Поле связанное внешним ключом с полем NOM_PRIH с таблицей Прихода*/
);
ALTER TABLE RASH_INS ADD CONSTRAINT UNQ1_RASH_INS UNIQUE (NOM_RASH);
/*Добавление внешнего ключа на поле (NOM_RASH) */
ALTER TABLE RASH_INS ADD CONSTRAINT FK_RASH_INS_2 FOREIGN KEY (NOM_RASH) REFERENCES PRIH_INS (NOM_PRIH);
SET TERM ^ ;
------------------------------------------------------------------------
Вот таким образом связанны 2 поля NOM_PRIH таблицы Прихода и NOM_RASH таблицы Расхода.
Вопрос вот какой!!!!!!!!!!!!!!!!!!!!!!!
Как? после того как данные сформировались в талице Прихода,(в поле NOM_PRIH есть данные) занести данные в таблицу Расхода в поле NOM_RASH!
С помощью ХП или в тригере перед вставкой в таблице Расхода?Но как?
И вообще зачем тогда нужна связка,Первичный->Внешний ключ!Т.е. результат должен быть таким: Что после вставки в Таблицу Прихода,данные из поля NOM_PRIH занеслись в таблицу Расхода в поле NOM_RASH!
[COLOR=red]Модератор: Убедительная просьба использовать теги CODE для оформления кода, иначе читать ваш текст очень тяжело![/COLOR]
Вставлять можете как угодно, хоть через ХП, хоть через клиентское приложение - это на ваше усмотрение. Назначение внешнего ключа - гарантировать целостность данных. Т.е. для любой дочерней записи должна существовать родительская запись. А также контролируются действия при обновлении\удалении родительских записей при наличии дочерних.
Понял!Учту!
Цитата: Ora-cool
Вставлять можете как угодно, хоть через ХП, хоть через клиентское приложение - это на ваше усмотрение. Назначение внешнего ключа - гарантировать целостность данных. Т.е. для любой дочерней записи должна существовать родительская запись. А также контролируются действия при обновлении\удалении родительских записей при наличии дочерних.
Все разобрался!Сделал в тригере!Тогда пытался сделать черех тригер и через ХП, писал insert table () value ();
А "он" с*ка value не хавает!Надо писать values();!!!!!!!!Вот так!