0

テーブルリマインダー、メッセージ、ユーザーがいます。Reminderテーブルに行が作成されるたびに、UsersテーブルのAdministratorsがMessagingテーブルにメッセージを受け取るように実装する必要があります。

私はSQLクエリ内ですべてを行っています。すべての管理者ユーザーの挿入と選択まで到達しました。また、レコード数でループを実行することもできます。ループに1つずつ挿入したい。

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#を使用して簡単に実行できますが、これらの処理を1回の接続と1回のヒット@バックエンドで実行したいと思います。

更新:画像と概要を参照してください

要約:私が必要としているのは、リマインダーでレコードが作成されるときです。クエリは、JFPUsers {condition RoleId = 1 is admin}からすべての管理者を選択し、JFMessagingにその行を作成します。ここで、SenderIdは、リマインダーまたは-1(システムの場合)を作成するユーザーであり、RecieverIdには、カスタム通知メッセージを含む管理者IDが含まれます。 。

ここに画像の説明を入力してください

4

1 に答える 1

1

INSERT管理者のメッセージテーブルにINSERTを実行するトリガーをリマインダーテーブルに作成します。SQLでループを使用する習慣から抜け出すようにしてください。これは通常、悪い習慣です。

このようなもの...

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