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

thay thế một cột được tính toán bằng một lôgic hoạt động với INSERT

Tôi đã đơn giản hóa logic một chút để tạo PackID

Thêm cột mới (identifier ) để xác định mã và sử dụng nó cho PackID tạo và sử dụng trình tự Identity cột

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
  ) 

Để kiểm tra hoạt động

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. Các tính năng bảo mật trong SQL Server 2017

  2. Máy chủ SQL trên Linux

  3. Làm cách nào để xóa các hàng trùng lặp khỏi chế độ xem?

  4. SQL - Sao chép một bản ghi và con cháu của nó

  5. Tính toán chênh lệch thời gian trong SQL Server