Если вы намереваетесь вставить 3 DetachedHouse768
строки (комната, этаж, дом) для каждой ранее вставленной строки Property542, первичный элемент на DetachedHouse768 неверен. PropertyID
само по себе не является уникальным, поэтому он может быть составным ключом на PropertyID
и Dept
, чтобы быть уникальным.
Ниже приведен пример INSERT ... SELECT с CROSS JOIN
:
CREATE TABLE Property542
(
PID int IDENTITY(1,1) NOT NULL ,
PropertyID AS RIGHT ('PID0000' + CAST(PID AS VARCHAR(10)), 10) PERSISTED
CONSTRAINT PK_Property PRIMARY KEY CLUSTERED,
Availability bit NOT null,
P_Address varchar(30) Not null,
MonthlyRent int Not null,
Max_tenants int Not null,
Type_of_Property varchar(15) Not null
);
CREATE TABLE DetachedHouse768
(
PropertyID varchar(10),
Dept varchar(30) Not null,
CONSTRAINT PK_DetachedHouse768 PRIMARY KEY CLUSTERED(PropertyID,Dept)
);
DECLARE @id TABLE (ID varchar(10))
INSERT INTO Property542
OUTPUT INSERTED.PropertyID INTO @id(ID)
VALUES (1,'Kandy Road,Pasyala',5000,4,'DetachedHouse')
,(0,' Kale para,Mathara',7500,2,'Flat')
,(1,'No34,New Town,Kaluthara',10000,1,'TerransedHouse');
INSERT INTO DetachedHouse768( PropertyID ,Dept)
SELECT ID, Dept
FROM @id
CROSS JOIN (VALUES
('room')
,('floor')
,('house')
) AS Depts(Dept);