Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2014, 13:10   #1
aleksskay
Форумчанин
 
Регистрация: 20.12.2011
Сообщений: 102
По умолчанию Создание внешнего ключа

interbase.
есть две таблицы.
Код:
CREATE TABLE REGIONS 
(
  ZIP	INTEGER NOT NULL,
  AREA	VARCHAR(30),
  REGION	VARCHAR(30),
  CITY	VARCHAR(20) NOT NULL,
 PRIMARY KEY (ZIP)
);
Код:
CREATE TABLE STAFF 
(
  ID	INTEGER NOT NULL,
  LASTNAME	VARCHAR(30) NOT NULL,
  FIRSTNAME	VARCHAR(30) NOT NULL,
  FATHERNAME	VARCHAR(30),
  ZIP	INTEGER,
  STREET	VARCHAR(30),
  HOUSE	VARCHAR(10),
  TEL	VARCHAR(20),
  TAXCODE	DOUBLE PRECISION DEFAULT 0 NOT NULL,
  TABNUM	VARCHAR(10),
  BIRTHDATE	TIMESTAMP NOT NULL,
  DEPID	SMALLINT NOT NULL,
  POSID	SMALLINT NOT NULL,
  BORNPLACE	VARCHAR(50),
  SALARY	NUMERIC(15, 2) DEFAULT 200.0 NOT NULL,
  PASSPNUM	VARCHAR(20),
  PASSPDATE	TIMESTAMP,
  PHOTO	BLOB SUB_TYPE 0 SEGMENT SIZE 80,
 PRIMARY KEY (ID)
);
Код:
ALTER TABLE STAFF
ADD FOREIGN KEY (ZIP) REFERENCES REGIONS
пытаюсь создать внешний ключ, но выдает сообщение типа
Violation of FOREIGN KEY constraint "INTEG_12" on table "REGIONS"
Как исправить?
aleksskay вне форума Ответить с цитированием
Старый 12.10.2014, 14:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А ты после создания таблиц Commit вызывал?
Ибо твой скрипт и по созданию и по связке на FireBird моем отработал нормально.
Кстати: Есть две таблицы. Они уже чем-то заполнены? Если да то выгрузи из них инфу, создай внешний ключ и загрузи заново.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2014, 15:06   #3
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Как исправить?
Думаю что так
Код:
CREATE TABLE REGIONS 
(
  ZIP	INTEGER NOT NULL,
  AREA	VARCHAR(30),
  REGION	VARCHAR(30),
  CITY	VARCHAR(20) NOT NULL,
  constraint pk_REGIONS PRIMARY KEY (ZIP)
);
commit;
------------GENERATOR ----------------------
CREATE GENERATOR REGIONS_ZIP; 
commit;
SET GENERATOR REGIONS_ZIP TO 0;
commit;  

-------------------TRIGGER------------------ 
CREATE TRIGGER REGIONS_BI FOR REGIONS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.ZIP IS NULL) THEN
NEW.ZIP = GEN_ID(REGIONS_ZIP, 1);
END;
commit;

-------------------------------------------
CREATE TABLE STAFF 
(
  ID	INTEGER NOT NULL,
  LASTNAME	VARCHAR(30) NOT NULL,
  FIRSTNAME	VARCHAR(30) NOT NULL,
  FATHERNAME	VARCHAR(30),
  ZIP	INTEGER,
  STREET	VARCHAR(30),
  HOUSE	VARCHAR(10),
  TEL	VARCHAR(20),
  TAXCODE	DOUBLE PRECISION DEFAULT 0 NOT NULL,
  TABNUM	VARCHAR(10),
  BIRTHDATE	TIMESTAMP NOT NULL,
  DEPID	SMALLINT NOT NULL,
  POSID	SMALLINT NOT NULL,
  BORNPLACE	VARCHAR(50),
  SALARY	NUMERIC(15, 2) DEFAULT 200.0 NOT NULL,
  PASSPNUM	VARCHAR(20),
  PASSPDATE	TIMESTAMP,
  PHOTO	BLOB SUB_TYPE 0 SEGMENT SIZE 80,
 constraint PK_STAFF PRIMARY KEY (ID)
);
--------------------------------------------------
commit;
------------------------------------------
ALTER TABLE STAFF ADD CONSTRAINT FK_STAFF FOREIGN KEY(ZIP) 
REFERENCES REGIONS(ZIP);
commit;
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с заданием внешнего ключа Митовей Помощь студентам 1 27.02.2013 20:03
Добавление внешнего ключа Ericnex БД в Delphi 6 02.05.2012 23:42
Как создать ограничение внешнего ключа?? Voldemort123987 БД в Delphi 2 09.06.2010 19:53
проблема с определением внешнего ключа! veter_s_morya SQL, базы данных 1 26.06.2008 18:37