Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Связка полей - (Первичный ->Внешний) ключи

21K
24 марта 2008 года
yalovenko_alexandr
34 / / 13.02.2008
Объясните пожалуйста как в базе данных связаны поля по схеме Первичный ->Внешний ключ!
FB2.0
Таблица Прихода
Скрипт:
Код:
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);


Код:
/*Тригер для вставки в поле (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 ; ^

------------------------------------------------------------------------
Таблица Расхода
Скрипт:
Код:
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 ^ ;

------------------------------------------------------------------------
Вот таким образом связанны 2 поля NOM_PRIH таблицы Прихода и NOM_RASH таблицы Расхода.
Вопрос вот какой!!!!!!!!!!!!!!!!!!!!!!!
Как? после того как данные сформировались в талице Прихода,(в поле NOM_PRIH есть данные) занести данные в таблицу Расхода в поле NOM_RASH!
С помощью ХП или в тригере перед вставкой в таблице Расхода?Но как?
И вообще зачем тогда нужна связка,Первичный->Внешний ключ!Т.е. результат должен быть таким: Что после вставки в Таблицу Прихода,данные из поля NOM_PRIH занеслись в таблицу Расхода в поле NOM_RASH!

[COLOR=red]Модератор: Убедительная просьба использовать теги CODE для оформления кода, иначе читать ваш текст очень тяжело![/COLOR]
8.2K
24 марта 2008 года
Ora-cool
211 / / 20.09.2007
Вставлять можете как угодно, хоть через ХП, хоть через клиентское приложение - это на ваше усмотрение. Назначение внешнего ключа - гарантировать целостность данных. Т.е. для любой дочерней записи должна существовать родительская запись. А также контролируются действия при обновлении\удалении родительских записей при наличии дочерних.
21K
24 марта 2008 года
yalovenko_alexandr
34 / / 13.02.2008
[COLOR=red]Модератор: Убедительная просьба использовать теги CODE для оформления кода, иначе читать ваш текст очень тяжело![/COLOR][/QUOTE]

Понял!Учту!
21K
24 марта 2008 года
yalovenko_alexandr
34 / / 13.02.2008
Цитата: Ora-cool
Вставлять можете как угодно, хоть через ХП, хоть через клиентское приложение - это на ваше усмотрение. Назначение внешнего ключа - гарантировать целостность данных. Т.е. для любой дочерней записи должна существовать родительская запись. А также контролируются действия при обновлении\удалении родительских записей при наличии дочерних.



Все разобрался!Сделал в тригере!Тогда пытался сделать черех тригер и через ХП, писал insert table () value ();
А "он" с*ка value не хавает!Надо писать values();!!!!!!!!Вот так!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог