2015-11-19 5 views
0

У меня есть две таблицы:Как вставить значение идентификатора в другую таблицу

create table Clients 
(
    id_client int not null identity(1,1) Primary Key, 
    name_client varchar(10) not null, 
    phone_client int not null 
) 

create table Sales 
(
    id_sale int not null identity(1,1) Primary Key, 
    date_sale date not null, 
    total_sale float not null 
    id_clients int not null identity(1,1) Foreign Key references Clients 
) 

Итак, давайте вставить клиентов («Ralph», 00000000), то id_client будет 1 (очевидно). Возникает вопрос: как я мог вставить этот 1 в Sales?

ответ

1

Прежде всего - вы не имеют две колонки определяется как identity в любой таблице - вы получите ошибку

Msg 2744, уровень 16, состояние 2, строка указывается 1
Несколько столбцов идентичности для таблицы «Продажи». Допускается только один столбец для каждой таблицы.

Таким образом, вы не сможете создать этот стол Sales.

id_clients колонка в Sales таблицы ссылкиidentity в колонке - но само по себе, оно должно не быть определена как личность - он получает любое значение, ваш клиент.

create table Sales 
(
    id_sale int not null identity(1,1) Primary Key, 
    date_sale date not null, 
    total_sale float not null 
    id_clients int not null foreign key references clients(id_client) 
) 

-- insert a new client - this will create an "id_client" for that entry 
insert into dbo.Clients(name_client, phone_client) 
values('John Doe', '+44 44 444 4444') 

-- get that newly created "id_client" from the INSERT operation 
declare @clientID INT = SCOPE_IDENTITY() 

-- insert the new "id_client" into your sales table along with other values 
insert into dbo.Sales(......, id_clients) 
values(......., @clientID) 
+1

Я не заметил, что я оставил id_clients как Identity в таблице Sales, спасибо за наблюдение. Решение было довольно простым: Вставить в значения продаж (......, (выберите id_clients от Клиентов)). Большое спасибо, мой друг. Вы рок: D – RalphVB

+0

Извините, правильный вариант Я решил, что это было с IDENT_CURRENT: D – RalphVB

+0

@RalphVB: Я бы рекомендовал использовать 'SCOPE_IDENTITY', а не' IDENT_CURRENT' –

Смежные вопросы