Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Skema basis data, peningkatan otomatis

Saya akan menggunakan kolom yang dihitung untuk PhraseVersion , yang akan menghitung jumlah baris dengan PhraseID yang sama dan Id lebih rendah atau sama dengan baris saat ini.

Untuk melakukannya, Anda perlu membuat UDF untuk menghitung PhraseVersion:

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

Kemudian, Buat tabel dengan kolom yang dihitung:

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

GO

Sekarang untuk ujian - masukkan 4 catatan:

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

Pilih:

SELECT *
FROM T

Hasil:

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

Anda dapat melihat demo langsung di rextester.



  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 Server 2016:Sisipkan Data

  2. Buat Pekerjaan Agen SQL Server menggunakan SSMS

  3. Apa yang BUKAN Operator Logis di SQL Server - Tutorial SQL Server / TSQL Bagian 121

  4. Menghitung jumlah bulan penuh antara dua tanggal dalam SQL

  5. Isi Tanggal yang Hilang untuk Output Kueri SQL Server menggunakan CTE