SQL Server 2008 R2 を使用すると、次のエラーが発生します。
メッセージ 311、レベル 16、状態 1、プロシージャ ad_user、行 28
「挿入」テーブルと「削除」テーブルでは、text、ntext、または image 列を使用できません。
トリガーの目的は、新しいユーザーが挿入されたときにユーザー グループ テーブルを更新することです。エラーが発生する場所までの SQL のみを含めました。) 私を混乱させるのは、整数宣言の1つを削除しても、同じエラーが発生しないことです(変数を宣言していないというエラーだけです)。
CREATE trigger [dbo].[ad_user] on [dbo].[tps_user]
FOR INSERT
AS
DECLARE @UserGuid uniqueidentifier
DECLARE @EndUserTypeGuid uniqueidentifier
DECLARE @UserTypeGuid uniqueidentifier
DECLARE @saGuid uniqueidentifier
DECLARE @GroupGuid uniqueidentifier
DECLARE @NewUser VarChar(250)
DECLARE @deptnum VarChar(250)
DECLARE @locnum VarChar(250)
DECLARE @CN VarChar(250)
DECLARE @NewOU VarChar(250)
DECLARE @pos1 integer
DECLARE @pos2 integer
BEGIN
SELECT @EndUserTypeGuid=tps_guid FROM tps_user_type WHERE tps_name='EndUser'
SELECT @saGuid = tps_guid FROM tps_user WHERE tps_title = 'SA'
SELECT @UserGuid=tps_guid,
@UserTypeGuid=tps_user_type_guid,
@NewUser=tps_title,
@deptnum=usr_departmentnumber,
@locnum=usr_locationnumber,
@CN=usr_ou
FROM inserted
IF @UserTypeGuid=@EndUserTypeGuid
BEGIN
SELECT @GroupGuid=tps_guid FROM tps_group WHERE usr_departmentnumber=@deptnum
IF @GroupGuid IS NOT NULL
BEGIN
IF @UserGuid NOT IN (SELECT tps_user_id
FROM tps_user_group WHERE tps_group_id = @GroupGuid)
BEGIN
-- Remove the user from other groups
DELETE FROM tps_user_group WHERE tps_user_id = @UserGuid;
-- Create Customer Group Membership from department
INSERT INTO tps_user_group(tps_user_id, tps_group_id, tps_creation_user_guid,
tps_last_update_user_guid, tps_creation_date, tps_last_update)
VALUES(@UserGuid, @GroupGuid, @saGuid, @saGuid, GetDate(), GetDate());
END
END
END
END