Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल सर्वर 2005 - पहचान कॉलम के बजाय जेनरेट किए गए अनुक्रमों का उपयोग करना?

हाँ, SQL 11 में SEQUENCE ऑब्जेक्ट हैं, देखें SQL सर्वर v.Next (Denali):SEQUENCE का उपयोग करना

मैन्युअल अनुक्रम बनाना संभव है, लेकिन अनुशंसित नहीं है। अनुक्रम जनरेटर करने की चाल अनुक्रम तालिका पर आउटपुट के साथ अद्यतन का उपयोग करना है। यहाँ छद्म कोड है:

CREATE TABLE Sequences (
    Name sysname not null primary key, 
    Sequence bigint not null default 0);
GO

CREATE PROCEDURE sp_getSequence
    @name sysname,
    @value bigint output
AS
    UPDATE Sequences
    SET Sequence = Sequence + 1
     OUTPUT @value = INSERTED.Sequence
    WHERE Name = @name;
GO

मैंने कुछ विवरण छोड़े हैं, लेकिन यह सामान्य विचार है। हालांकि, एक बड़ी समस्या है:अनुक्रम पर अगले मान का अनुरोध करने वाला कोई भी लेन-देन लॉक . होगा वह अनुक्रम जब तक यह प्रतिबद्ध नहीं होता, क्योंकि यह अनुक्रम मान पर एक अद्यतन लॉक रखेगा। इसका मतलब है कि सभी मूल्यों को सम्मिलित करते समय लेन-देन को एक-दूसरे के बाद क्रमबद्ध करना पड़ता है और वास्तविक उत्पादन परिनियोजन में परिणाम असहनीय होता है।

मैं आपको पहचान प्रकारों के साथ रहना पसंद करूंगा। पूर्ण नहीं होते हुए भी, वे उस से कहीं बेहतर हैं जो आप अपने दम पर हासिल कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर प्रोफाइलर का उपयोग करके लॉग टेबल एक्सेस

  2. SQL सर्वर कन्वर्ट एक कॉलम का चयन करें और इसे एक स्ट्रिंग में बदलें

  3. एकल उपयोगकर्ता मोड में sql सर्वर प्रारंभ नहीं कर सकता

  4. INT को BigInt . में बदला जा रहा है

  5. टेक्स्ट या ntext डेटाटाइप पर REPLACE के विकल्प