0

我有一个表提醒、消息和用户。我必须实现,每当在 Reminder 表中创建一行时,Users 表中的管理员就会在他们的 Messaging 表中收到消息。

我在 sql 查询中做所有事情。我已经达到了所有管理员用户的插入和选择,我也能够在记录数上运行一个循环。我想在循环中一一插入。

If @flag=1 // flag=1 means reminder is created successfully
BEGIN
 Declare @BackUpMessage as varchar(200)
 Set @BackupMessage = 'Hi Admin,\r\n
 \t A backup has been scheduled by the system. Details are given below: \r\n
    a) Bakcup Type : '+rem_type+' \r\n
    b) Backup Date : '+ Convert(varchar,GETDATE()+@days)+''
                    
 Set @Count = (Select Count(*) From JFPUsers Where RoleId=1 and Active=1) // Total Numbers of Admin
 IF @Count > 0
    Declare @i int =0

    Select Id From JFPUsers Where RoleId=1 and Active=1 // Getting Id of each admin to save
    While @i < @Count
    BEGIN
        Insert Into JFMessaging (MessageBody, SenderId,RecieverId,IsRead,SentOn,IsActive)
        Values(@BackUpMessage, -1, ,0,GETDATE(),1) // I am stucked here 
    END
END

我可以使用 C# 轻松完成,但我想在单个连接和单个点击 @backend 中完成这些工作。

更新:见图片和摘要

摘要:我需要的是每当在提醒中创建记录时。该查询将从 JFPUsers {condition RoleId=1 is admin} 中选择所有管理员,并在 JFMessaging 中创建那么多行,其中 SenderId 将是创建提醒的用户或 -1(对于系统),而 RecieverId 将包含带有自定义通知消息的管理员 ID .

在此处输入图像描述

4

1 回答 1

1

在您的 Reminder 表上创建一个INSERT触发器,该触发器将 INSERT 插入到管理员的消息表中。尝试改掉在 SQL 中使用循环的习惯——这通常是不好的做法。

像这样的东西...

insert JFMessaging (ReceiverID, Otherfields)
select UserID, otherfields
from
    inserted
        cross join
    JFPusers
where RoleID = 1
于 2012-10-08T13:57:38.140 回答