我想在表creneau
中对某一行进行某种“复制粘贴”。此行与表creneau_jour
具有一对多关系。因此,我也希望复制这种关系的所有行。我正在尝试做我用MySQL做的事情,但我错过了一些东西,但不知道为什么:
INSERT INTO [RdV].[dbo].[creneau]
([libelle]
,[debut]
,[fin]
,[heure_debut]
,[duree])
SELECT
'Encore !!!', debut, fin, heure_debut, duree
FROM
creneau
WHERE
id = 1;
INSERT INTO [RdV].[dbo].[creneau_jour]
([creneau_id] ,[jour_semaine])
VALUES (
SELECT SCOPE_IDENTITY(), SELECT jour_semaine FROM creneau_jour WHERE id=1
);
知道我做错了什么?
答案 0 :(得分:1)
DECLARE @SCOPEIDENTITY INT;
INSERT INTO [RdV].[dbo].[creneau]
([libelle]
,[debut]
,[fin]
,[heure_debut]
,[duree])
SELECT 'Encore v3',debut,fin,heure_debut,duree FROM creneau WHERE id=1;
SET @SCOPEIDENTITY = SCOPE_IDENTITY();
INSERT INTO [RdV].[dbo].[creneau_jour] ([creneau_id] ,[jour_semaine])
SELECT @SCOPEIDENTITY, jour_semaine FROM creneau_jour WHERE creneau_id=1
;
GO
答案 1 :(得分:1)
您可以忘记使用SCOPE_IDENTITY()
并使用OUTPUT
作为INSERT
的一部分,以便您可以使用新创建的行中的值设置变量。
此方法的一个优点是,如果您打开身份插入,那么@SCOPE_IDENTITY将无效,但使用OUTPUT的方法将会起作用。
DECLARE @Identity INT
INSERT INTO [RdV].[dbo].[creneau]
([libelle]
,[debut]
,[fin]
,[heure_debut]
,[duree])
OUTPUT inserted.IdentityColumn INTO @Identity
SELECT
'Encore !!!', debut, fin, heure_debut, duree
FROM
creneau
WHERE
id = 1
INSERT INTO [RdV].[dbo].[creneau_jour]
([creneau_id] ,[jour_semaine])
VALUES (
SELECT @Identity, SELECT jour_semaine FROM creneau_jour WHERE id=1
);
答案 2 :(得分:0)
试试这个
DECLARE @SCOPEIDENTITY INT;
INSERT INTO [RdV].[dbo].[creneau]
([libelle]
,[debut]
,[fin]
,[heure_debut]
,[duree])
SELECT 'Encore v3',debut,fin,heure_debut,duree FROM creneau WHERE id=1;
SET @SCOPEIDENTITY = SCOPE_IDENTITY();
INSERT INTO [RdV].[dbo].[creneau_jour] ([creneau_id] ,[jour_semaine])
SELECT @SCOPEIDENTITY, jour_semaine FROM creneau_jour WHERE creneau_id=1;
GO