我有表提醒,消息和用户。我必须实现,每当在Reminder表中创建一行时,Users表中的Administrators将在其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 。
答案 0 :(得分:1)
在Reminder表上创建一个INSERT
触发器,为管理员执行INSERT到messages表中。试着摆脱在SQL中使用循环的习惯 - 这通常是不好的做法。
像这样......
insert JFMessaging (ReceiverID, Otherfields)
select UserID, otherfields
from
inserted
cross join
JFPusers
where RoleID = 1