Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

zastąp kolumnę obliczeniową logiką, która działa z INSERT

Uprościłem nieco logikę generowania PackID

Dodaj nową kolumnę(identifier ) do identyfikacji kodu i użyj go do PackID generowanie i dla sekwencji użyj Identity kolumna

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
  ) 

Aby sprawdzić działanie

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. Co dzieje się z niezatwierdzoną transakcją po zamknięciu połączenia?

  2. Jak dodać lub upuścić kolumnę z tabeli włączonej usługi CDC bez utraty danych w bazie danych programu SQL Server — samouczek programu SQL Server

  3. SQL łączenie wielu kolumn w jedną kolumnę

  4. Zapytanie SQL do wyszukiwania schematu wszystkich tabel

  5. Jak zmienić wszystkie kolumny Sql jednego typu danych na inny?