通过触发器从 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)
- 您不能假设
Inserted
只有一行,您必须将其视为具有 0-N 行的 table 并对其执行基于集合的操作(而不是比程序)。
FORMAT
会将您现有的 ID 格式化为您需要的新格式。
INSERT INTO [dbo].[tblUsersPseudo] (id, col1, col2, ...)
SELECT FORMAT(id,'PSU0000')
, col1, col2
FROM Inserted;
我正在创建一个插入触发器,它将使用新插入行中的 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)
- 您不能假设
Inserted
只有一行,您必须将其视为具有 0-N 行的 table 并对其执行基于集合的操作(而不是比程序)。 FORMAT
会将您现有的 ID 格式化为您需要的新格式。
INSERT INTO [dbo].[tblUsersPseudo] (id, col1, col2, ...)
SELECT FORMAT(id,'PSU0000')
, col1, col2
FROM Inserted;