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

डेटाबेस योजना, ऑटोइनक्रिकमेंट

मैं PhraseVersion . के लिए एक परिकलित कॉलम के साथ जाऊंगा , जो समान PhraseID . के साथ पंक्तियों की गिनती लेगा और Id वर्तमान पंक्ति से कम या उसके बराबर।

ऐसा करने के लिए, आपको वाक्यांश संस्करण की गणना करने के लिए एक यूडीएफ बनाना होगा:

CREATE FUNCTION dbo.GetPhraseVersion (
    @PhraseId int,
    @id int
)
RETURNS INT
AS
BEGIN
    RETURN (
        SELECT COUNT(*) 
        FROM T 
        WHERE PhraseId = @PhraseId 
        AND Id <= @id
    )
END
GO

फिर, गणना किए गए कॉलम के साथ तालिका बनाएं:

CREATE TABLE T
(
    id int identity(1,1),
    PhraseId int,
    PhraseVersion as dbo.GetPhraseVersion(PhraseId, id)
)

GO

अब परीक्षण के लिए - 4 रिकॉर्ड डालें:

INSERT INTO T (PhraseId) VALUES(1),(1),(1),(2)

चुनें:

SELECT *
FROM T

परिणाम:

id  PhraseId    PhraseVersion
1   1           1
2   1           2
3   1           3
4   2           1

आप रेक्सटेस्टर पर लाइव डेमो देख सकते हैं।



  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 क्वेरी .NET एप्लिकेशन में धीमी है लेकिन SQL सर्वर प्रबंधन स्टूडियो में तात्कालिक है

  2. एक अप्रत्यक्ष ग्राफ के सभी जुड़े हुए सबग्राफ कैसे खोजें

  3. पुनरारंभ किए बिना SQL सर्वर इंस्टेंस तक पहुंच बहाल करना

  4. SQL सर्वर में डायनामिक पिवट कॉलम

  5. ब्राउज़र में जावास्क्रिप्ट से SQL सर्वर डेटाबेस से कैसे कनेक्ट करें?