sql >> データベース >  >> RDS >> Sqlserver

SQL Serverで、年、特殊文字、および順次シリーズ番号で構成される自動インクリメントの主キーIDを生成するにはどうすればよいですか?

    これが完全な解決策です。これは、私がマークした複製とまったく同じであることに注意してください-データベーススキーム、自動インクリメント -詳細が異なります。

    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
    

    テーブルの主キーは引き続きidentityである必要があることに注意してください 計算された列を主キーにすることはできないため、(スクリプトに示されているように)列。



    1. データベース内の永続化された日付が取得された日付と等しくない

    2. OracleデータベースでPL/SQLブロック・メンバーとしてVARRAYを作成する方法

    3. php経由でmysqldbからすべての製品カテゴリを取得してjson配列を返す方法

    4. MySQLのすべての親子関係