मैं SQL सर्वर 2012एसक्यूएल सर्वर में सम्मिलित करना डेटा 2012
साथ काम कर रहा हूँ मैं दो टेबल, Person
और Couple
है, Person
Couple
से एक विदेशी कुंजी है और Couple
'व्यक्ति' से विदेशी कुंजी है।
जब मैं प्रत्येक में डेटा डालने का प्रयास करता हूं, तो एक त्रुटि होती है क्योंकि प्रत्येक तालिका में अन्य तालिका से FK होता है, और दोनों प्रारंभ में खाली होते हैं।
CREATE TABLE [dbo].[Couple](
[CoupleId] [int] IDENTITY(1,1) NOT NULL,
[HusbandPersonId] [int] NOT NULL,
[WifePersonId] [int] NOT NULL,
[StartDate] [date] NOT NULL,
[EndDate] [date] NOT NULL,
CONSTRAINT [PK_Couple] PRIMARY KEY CLUSTERED
(
[CoupleId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Person](
[PersonId] [int] IDENTITY(1,1) NOT NULL,
[ChildOfCoupleId] [int] NOT NULL,
[CityOfBirth] [int] NOT NULL,
[CityOfPermanentResidence] [int] NOT NULL,
[CityOfCurrentResidence] [int] NOT NULL,
[FirstName] [varchar](20) NOT NULL,
[LastName] [varchar](20) NOT NULL,
[BirthDate] [date] NOT NULL,
[DeathDate] [date] NOT NULL,
[IsMale] [bit] NOT NULL,
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED
(
[PersonId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY
ALTER TABLE [dbo].[Couple] WITH CHECK ADD CONSTRAINT [FK_Couple_Person] FOREIGN KEY([HusbandPersonId])
REFERENCES [dbo].[Person] ([PersonId])
GO
ALTER TABLE [dbo].[Couple] CHECK CONSTRAINT [FK_Couple_Person]
GO
ALTER TABLE [dbo].[Couple] WITH CHECK ADD CONSTRAINT [FK_Couple_Person1] FOREIGN KEY([WifePersonId])
REFERENCES [dbo].[Person] ([PersonId])
GO
ALTER TABLE [dbo].[Couple] CHECK CONSTRAINT [FK_Couple_Person1]
GO
ALTER TABLE [dbo].[Person] WITH CHECK ADD CONSTRAINT [FK_Person_Couple] FOREIGN KEY([ChildOfCoupleId])
REFERENCES [dbo].[Couple] ([CoupleId])
GO
ALTER TABLE [dbo].[Person] CHECK CONSTRAINT [FK_Person_Couple]
GO
इसे कैसे हल करें?
क्यों आपको वास्तव में दोनों टेबलों को एक-दूसरे को विदेशी कुंजी देने की ज़रूरत है? – Azzy
बेहतर होगा कि आपने टेबल परिभाषाएं पोस्ट की हों। –
कुछ डीबीएमएस आपको बाधाओं को * स्थगित * के रूप में परिभाषित करने की अनुमति देते हैं ताकि जब आप लेनदेन करते हैं तो उनका मूल्यांकन किया जाता है, न कि जब आप 'insert 'चलाते हैं। निश्चित नहीं है कि SQL सर्वर 2012 में ऐसी सुविधा है या नहीं। –