Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

замени изчислена колона с логика, която работи с INSERT

Опростих малко логиката за генериране на PackID

Добавете нова колона (identifier ) за идентифициране на кода и го използвайте за PackID генериране и за последователност използвайте Identity колона

CREATE TABLE [dbo].[tblPacks]
  (
     Iden_ID       INT IDENTITY(1, 1),
     [ID]          [INT] NOT NULL,
     [BatchNumber] [VARCHAR](30) NULL,
     [Identifier]  [VARCHAR](50),
     [PackID] AS [Identifier]
        + CASE
            WHEN Iden_ID <= 999 THEN RIGHT('00' + CONVERT(VARCHAR(3), ID), 3)
            ELSE CONVERT([VARCHAR](20), ID, 0)
          END,
     [Status]      [INT] NULL
  ) 

За да проверите работата

INSERT INTO [dbo].[tblPacks]
            ([ID],identifier,[BatchNumber],[Status])
VALUES      (1,'pk','bat',1)

SELECT *
FROM   [tblPacks] 



  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 география към dbgeography?

  2. Как да съедините две таблици с еднакъв брой редове по техния ред

  3. по-добър начин за генериране на таблица месеци/години

  4. SSIS API:Как да разберете към кой интерфейс да прехвърлите __COMObject?

  5. Автоматично събиране на данни:файлове с бази данни и логически устройства в MS SQL Server