ऐसा लगता है कि यह ऐसा मुद्दा है जो SQL/डेटाबेस विकास के साथ हर समय फसल करेगा, लेकिन फिर मैं इन सबके लिए नया हूं, इसलिए मेरी अज्ञानता को क्षमा करें।एसक्यूएल संबंधित तालिकाओं में सम्मिलित
CREATE TABLE [dbo].[Tracks](
[TrackStringId] [bigint] NOT NULL,
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Time] [datetime] NOT NULL,
CONSTRAINT [PK_Tracks] PRIMARY KEY CLUSTERED
(
[Id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Tracks] CHECK CONSTRAINT [FK_Tracks_AudioStreams]
GO
ALTER TABLE [dbo].[Tracks] WITH CHECK ADD CONSTRAINT
[FK_Tracks_TrackStrings] FOREIGN KEY([TrackStringId])
REFERENCES [dbo].[TrackStrings] ([Id])
GO
ALTER TABLE [dbo].[Tracks] CHECK CONSTRAINT [FK_Tracks_TrackStrings]
GO
और
CREATE TABLE [dbo].[TrackStrings](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[String] [nvarchar](512) NOT NULL,
CONSTRAINT [PK_Strings] PRIMARY KEY CLUSTERED
(
[Id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
मैं पटरियों तालिका में एक नई प्रविष्टि सम्मिलित करना चाहते हैं:
2 टेबल है। इसमें ट्रैकस्ट्रिंग टेबल में एक नई प्रविष्टि भी शामिल होगी, और यह सुनिश्चित करना होगा कि ट्रैक में विदेशी कुंजी कॉलम ट्रैकस्ट्रिंगिड ट्रैकस्ट्रिंग में नई प्रविष्टि को इंगित करता है। इसे प्राप्त करने का सबसे प्रभावी माध्यम क्या है?
@@ पहचान यह करने का सबसे अच्छा तरीका नहीं है। SCOPE_IDENTITY() अधिक सुरक्षित है। यदि कोई ट्रिगर है जो ट्रैकस्ट्रिंग में डालने पर कुछ काम करता है और यह पहचान के साथ तालिका में प्रवेश करता है, तो आपको ट्रिगर से पहचान मिल जाएगी, न कि मूल तालिका। –
कूल, जानकारी के लिए धन्यवाद। मुझे अंतर का एहसास नहीं हुआ। – palehorse
कृपया यह जानने के लिए पढ़ें कि @@ इस मामले में पहचान का उपयोग क्यों नहीं किया जाना चाहिए: http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve- अंतिम डाला-पहचान-ऑफ-द रिकॉर्ड / – hidden