通过触发器从 inserted.id 创建一个字符串

Create a string from inserted.id via trigger

我正在创建一个插入触发器,它将使用新插入行中的 ID 在另一个 table 中创建一条新记录。

我需要先格式化 id,然后再将其插入另一个 table。到目前为止,这是我的代码....在创建格式化的@PseudoID 时遇到问题。

CREATE TRIGGER OnInsertCreateUnallocatedPseudo 
   ON  tblTeams 
   AFTER INSERT
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for trigger here
    DECLARE @PseudoID NVARCHAR(50), @tmID NVARCHAR(10)

    SELECT @tmID = CONVERT(nvarchar(10),inserted.tmID) FROM inserted

    --NEED SOME CODE TO CREATE A PADDED OUT PseudoID e.g.
    -- if @tmID =  '7' then @PseudoID = 'PSU0007'
    -- if @tnID = '25' then @PseudoID = 'PSU0025'


    INSERT INTO [dbo].[tblUsersPseudo].....
END

您不能将其分配给触发器中的变量,因为可能有多行,但您可以执行类似这样的操作以插入到另一个 table.

LEFT('PSU0000',LEN('PSU0000')-LEN(CONVERT(nvarchar(10),inserted.tmID))) + CONVERT(nvarchar(10),inserted.tmID)
  1. 您不能假设 Inserted 只有一行,您必须将其视为具有 0-N 行的 table 并对其执行基于集合的操作(而不是比程序)。
  2. FORMAT 会将您现有的 ID 格式化为您需要的新格式。
INSERT INTO [dbo].[tblUsersPseudo] (id, col1, col2, ...)
    SELECT FORMAT(id,'PSU0000')
      , col1, col2
    FROM Inserted;