【发布时间】:2010-12-16 05:52:17
【问题描述】:
我是 SQL 新手。我正在创建一个虚拟项目。在我的项目中,我有一个注册页面,我想创建一个用户名(名字 + 姓氏 + 用户 ID)。但问题是,我无法捕获用户 ID value.I 已经使用了 After Trigger 和而不是 Trigeer。下面是我的脚本 -
表-
CREATE TABLE UserInfo
(
UserID INT IDENTITY(1,1),
FirstName NVARCHAR(500),
LastName NVARCHAR(500),
[Password] NVARCHAR(200),
EmailID NVARCHAR(200),
[Address] NVARCHAR(500),
CountryID INT,
StateID INT,
UserName NVARCHAR(500)
)
插入数据的过程 -
CREATE PROC Create_User
@FirstName NVARCHAR(500),
@LastName NVARCHAR(500),
@Password NVARCHAR(200),
@EmailID NVARCHAR(200),
@Address NVARCHAR(500),
@CountryID INT,
@StateID INT,
@UserID INT OUTPUT
AS
BEGIN
INSERT INTO UserInfo (FirstName,LastName,[Password],EmailID,[Address],CountryID,StateID)
VALUES
(@FirstName,@LastName,@Password,@EmailID,@Address,@CountryID,@StateID)
SET @UserID = SCOPE_IDENTITY();
END
触发后-
CREATE TRIGGER Create_UserName
ON UserInfo
AFTER INSERT
AS
BEGIN
DECLARE @_UName VARCHAR(200);
SET @_UName = (SELECT FirstName+LastName+Cast(UserID AS NVARCHAR(100)) from INSERTED )
INSERT INTO UserInfo (UserName) VALUES (@_UName)
END
GO
输出 - 插入两行
而不是触发器 -
CREATE TRIGGER Create_UserName
ON UserInfo
INSTEAD OF INSERT
AS
BEGIN
DECLARE @UName NVARCHAR(200);
DECLARE @FName NVARCHAR(200);
DECLARE @LName NVARCHAR(200);
DECLARE @UPassword NVARCHAR(200);
DECLARE @UEmailID NVARCHAR(200);
DECLARE @UAddress NVARCHAR(200);
DECLARE @UCountryID INT;
DECLARE @UStateID INT;
SET @UName = (SELECT FirstName+LastName+Cast(UserID AS NVARCHAR(100)) from INSERTED )
SET @FName = (SELECT FirstName from INSERTED )
SET @LName = (SELECT LastName from INSERTED )
SET @UPassword = (SELECT [Password] from INSERTED )
SET @UEmailID = (SELECT EmailID from INSERTED )
SET @UAddress = (SELECT [Address] from INSERTED )
SET @UCountryID = (SELECT CountryID from INSERTED )
SET @UStateID = (SELECT StateID from INSERTED )
INSERT INTO UserInfo (FirstName,LastName,[Password],EmailID,[Address],CountryID,StateID,UserName)
VALUES (@FName,@LName,@UPassword,@UEmailID,@UAddress,@UCountryID,@UStateID,@UName)
END
GO
输出 - 这工作正常,但身份为 0。
请告诉我该怎么做?
提前致谢。
【问题讨论】:
标签: sql sql-server triggers