Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Trong SQL Server, làm cách nào để tạo ID khóa chính tự động tăng dần bao gồm năm, một ký tự đặc biệt và một chuỗi số tuần tự?

Đây là một giải pháp hoàn chỉnh. Xin lưu ý rằng nó hoàn toàn giống với bản sao tôi đã đánh dấu - Lược đồ cơ sở dữ liệu, tự động gia tăng - Chỉ là các chi tiết khác nhau.

CREATE TABLE [dbo].[STUDENT]
(
    [ID] int identity(1,1) PRIMARY KEY,
    [Stud_LName] [varchar](100) NOT NULL,
    [Stud_FName] [varchar](100) NOT NULL,
    [Stud_MName] [varchar](100) NOT NULL
)
GO

CREATE FUNCTION dbo.GetSudentId
(
    @id int
)
RETURNS varchar(10)
AS
BEGIN
    RETURN Concat(Year(Getdate()), '-', RIGHT(Concat('0000', (SELECT COUNT(*) FROM STUDENT WHERE id < @Id)), 6))
END
GO

ALTER TABLE [dbo].[STUDENT]
    ADD Stud_ID AS (dbo.GetSudentId(Id))
GO

Xin lưu ý rằng khóa chính của bảng vẫn phải là identity (như được hiển thị trong tập lệnh) vì cột được tính không thể là khóa chính.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm tổng hợp MIN và MAX trong SQL Server

  2. PHP 7.0 ODBC-Driver cho Windows

  3. Cách chuyển đổi giá trị ngày / giờ thành chuỗi trong SQL Server bằng CONVERT ()

  4. Kết quả SSMS thành Grid - CRLF không được bảo toàn trong sao chép / dán - bất kỳ kỹ thuật nào tốt hơn?

  5. Tại sao SQL Server làm tròn kết quả của phép chia hai số nguyên?