0

私は2つのテーブルを持っています:

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
)

それでは、Clients ('Ralph', 00000000) に挿入してみましょう。id_client は (明らかに) 1 になります。問題は、その 1 を Sales に挿入するにはどうすればよいかということです。

4

2 に答える 2

1

まず第一に、テーブルのように2 つの列を定義することはできませんidentity。エラーが発生します。

メッセージ 2744、レベル 16、状態 2、行 1
テーブル 'Sales' に複数の ID 列が指定されています。テーブルごとに 1 つの ID 列のみが許可されます。

Salesそのため、実際にそのテーブルを作成することはできません。

テーブル内のid_clients列は列を参照しますが、それ自体はID として定義されるべきではありません。クライアントが持っている値を取得します。Salesidentity

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)
于 2015-11-19T05:40:36.610 に答える