Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Связь составными ключами между 2 базами данных  [new]
Germ529
Member

Откуда:
Сообщений: 17
имеются 2 базы данных RP и Main. В них таблицы Table1 и Table2 связать их нужно составными ключами Order_ID и Code_RP:
База данных Main с 2 таблицами:

CREATE TABLE [dbo].[Status] (
    [ORDER_ID1] INT           NOT NULL,
    [Name]      NVARCHAR (10) NOT NULL,
    PRIMARY KEY CLUSTERED ([ORDER_ID1] ASC),
    CONSTRAINT [FK_Table2_Status] FOREIGN KEY ([ORDER_ID1]) REFERENCES [dbo].[Table2] ([ORDER_ID])
);


Таблица 2:
CREATE TABLE [dbo].[Table2] (
    [ORDER_ID] INT           NOT NULL,
    [CODE_RP]  INT           NOT NULL,
    [Name]     NVARCHAR (10) NOT NULL,
    PRIMARY KEY CLUSTERED ([ORDER_ID] ASC, [CODE_RP] ASC)
);
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Table2ID]
    ON [dbo].[Table2]([ORDER_ID] ASC);

База данных RP с 1 таблицей:
CREATE TABLE [dbo].[Table1] (
    [ORDER_ID]  INT           NOT NULL,
    [CODE_RP]   INT           NOT NULL,
    [STATUS_RP] NVARCHAR (10) NOT NULL,
    [FIO]       NVARCHAR (1)  NOT NULL,
    PRIMARY KEY CLUSTERED ([ORDER_ID] ASC, [CODE_RP] ASC)
);

Оказалось чтобы Table1 и Table2 связать нужно написать триггер. Вот триггер:

CREATE TRIGGER [Trigger]
	ON [dbo].[table2]
	FOR DELETE, INSERT, UPDATE
	AS
	BEGIN
		ALTER TABLE [dbo].[Table2]
		ADD FOREIGN KEY (ORDER_ID, CODE_RP) 
		REFERENCES  [RP].[dbo].[Table1](ORDER_ID, CODE_RP)
	END

но поле [RP].[dbo].[Table1](ORDER_ID, CODE_RP) выдает ошибку что SQL71562:Trigger:[dbo].[Trigger] has an unresolved reference to Object [RP].[dbo].[Table1]. Что нужно сделать чтобы создать успешное соединение?

P.S. Базу создал в Visual Studio 2013. (для инфо)

Сообщение было отредактировано: 14 июн 14, 21:52
14 июн 14, 21:08    [16163783]     Ответить | Цитировать Сообщить модератору
 Re: Связь составными ключами между 2 базами данных  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Germ529,

FOREIGN KEYs возможны только в пределах одной базы данных.
14 июн 14, 21:39    [16163859]     Ответить | Цитировать Сообщить модератору
 Re: Связь составными ключами между 2 базами данных  [new]
Germ529
Member

Откуда:
Сообщений: 17
То есть это невозможно связать Table1 в RP и Table2 в Main составными ключами Order_ID и Code_RP?
14 июн 14, 22:09    [16163932]     Ответить | Цитировать Сообщить модератору
 Re: Связь составными ключами между 2 базами данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
Germ529
То есть это невозможно связать Table1 в RP и Table2 в Main составными ключами Order_ID и Code_RP?

В одной базе - возможно
В разных базах - невозможно
14 июн 14, 22:19    [16163970]     Ответить | Цитировать Сообщить модератору
 Re: Связь составными ключами между 2 базами данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Germ529
То есть это невозможно связать Table1 в RP и Table2 в Main составными ключами Order_ID и Code_RP?
Форинкеем связать невозможно.
14 июн 14, 22:19    [16163971]     Ответить | Цитировать Сообщить модератору
 Re: Связь составными ключами между 2 базами данных  [new]
red88888
Member

Откуда:
Сообщений: 130
Если таблиц не много - можно попробовать напилить псевдонимов.
17 июн 14, 17:51    [16177709]     Ответить | Цитировать Сообщить модератору
 Re: Связь составными ключами между 2 базами данных  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
ссылочную целостность между базами нужно делать на триггерах
17 июн 14, 17:54    [16177725]     Ответить | Цитировать Сообщить модератору
 Re: Связь составными ключами между 2 базами данных  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
Germ529, рассмотрите вариант использования схемы вместо базы.

Вы получите все возможности базы в отношении прав, файловых групп и сможете создавать внешние ключи.
17 июн 14, 18:44    [16177951]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить