2013-05-09 22 views
0

我試圖實現一個簡單的通知系統,該表格向每個用戶插入「Notification」行「通知」已經參加了一個主題。我的代碼發生在觸發器中,目前正在通知用戶其他用戶已回覆他的特定評論,但並未通知線程中的其他人已發佈新評論。創建一個查詢,遍歷表中的id列表A在表B中爲每個項目插入一個新行

ALTER TRIGGER OnDocumentCommentPosted 
ON DocumentComments 
AFTER 
INSERT 
AS 
IF (SELECT InResponseTo FROM inserted) IS NOT NULL 
BEGIN 
INSERT INTO Notifications 
([CommentID],[Type],[RecieverId]) //This is a notification object from table Notifications shown at the bottom of this post 
SELECT id, 'DocumentComment', InResponseTo //this is a DocumentComment object from table DocumentComments shown at the bottom of this post 
FROM inserted 
END 

我基本上想從下面的查詢中獲取結果,然後針對每個結果運行上面的相同查詢。

SELECT OwnerId FROM DocumentComments WHERE DocumentID = @DocumentId 

讓我IDS

的名單,然後在列表中的每個ID運行下面的查詢代每個ID爲@id

SET @Comid = (SELECT id FROM inserted); 

INSERT INTO Notifications 
([CommentID],[Type],[RecieverId]) 
@Comid, 'DocumentComment', @id 

有沒有辦法加入這種類型的功能放入我上面的原始觸發器查詢中?

編輯

看來這可能是一個有點混亂理解,所以讓我試着解釋一下我的表結構簡單

簡要說明

表:文件 - (盛放實際數據爲excel,pdf,無論通過用戶上傳)

表:DocumentComments - (對e ACH文件[大 - 許多])

表:通知 - (存放通知數據對於由每個評論,並且如果它已經被讀取或不

底層結構

表文獻提供布爾
PK = ID

表DocumentComments
PK = ID
FK = DocumentId
InResponseTo =用戶的用戶ID誰的評論已被插入註釋 OWNERID =誰擁有用戶的用戶ID迴應或創建此評論

表通知(熊與DocumentComments沒有直接關係因爲這表是擁有許多類型的通知,而不僅僅是DocumentComment通知
通用表

PK = ID
FK = RecieverId =誰將會收到此通知的用戶的用戶ID。
CommentID =如果通知了評論這個值就會充滿問題的意見涉及

AnnouncementID =如果發佈一條消息:該值將充滿問題的公告通知交易

事件ID
MeetingID =這兩個字段的作用與上述兩個字段相同。

讀=布爾,閱讀通知

+0

是'@'DocumentId'的InResponseTo'的價值? – TechDo 2013-05-09 05:01:20

+0

不,我會用我的表格結構和解釋來更新我的問題。我現在只是在思考這個問題而困惑自己。 – Adrian 2013-05-09 05:06:08

+0

@techdo'@ DocumentId'是當前插入註釋的文檔的PK。所以我在這個sql查詢中所做的是從DocumentComments表中爲某個文檔獲取所有ownerids(已寫入註釋的人)。因此'@ DocumentId'。因此,基本上每個插入到表格DocumentComments中的註釋都包含父級documentId以及編寫註釋的人員的用戶標識。希望這更有意義 – Adrian 2013-05-09 05:25:02

回答

0

這裏的狀態下,試試這個:

SET @Comid = (SELECT id FROM inserted); 

INSERT INTO Notifications 
([CommentID],[Type],[RecieverId]) 
SELECT @Comid, 'DocumentComment',OwnerId FROM DocumentComments WHERE DocumentID = @DocumentId 
+0

太棒了!太簡單了,我感到尷尬。 – Adrian 2013-05-09 17:12:14

相關問題