Trong DB của tôi, tôi có hai bảng Items (Id, ..., ToatlViews int) và ItemViews (id, ItemID, Timestamp)Cập nhật đếm cột từ dữ liệu trong bảng khác
Trong bảng ItemViews tôi lưu trữ tất cả các quan điểm của một mục khi họ đến trang web. Đôi khi tôi muốn gọi một thủ tục lưu sẵn để cập nhật trường Items.ToatlViews. Tôi đã cố gắng để làm điều này SP bằng cách sử dụng một con trỏ ... nhưng tuyên bố cập nhật là sai. Bạn có thể giúp tôi sửa nó không? Tôi có thể làm điều này mà không có con trỏ không?
CREATE PROCEDURE UpdateItemsViews
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @currentItemId int
DECLARE @currentItemCursor CURSOR
SET @currentItemCursor = CURSOR FOR SELECT Id FROM dbo.Items
OPEN @currentItemCursor
FETCH NEXT FROM @currentItemCursor INTO @currentItemId
WHILE @@FETCH_STATUS = 0
BEGIN
Update dbo.Items set TotalViews = count(*)
from dbo.ItemViews where [email protected]
FETCH NEXT FROM @currentItemCursor INTO @currentItemId
END
END
GO
Tôi khuyên bạn nên cố gắng hết sức để không sử dụng con trỏ khi viết SQL, vì sẽ luôn có một cách 'set' dựa trên để viết những gì bạn muốn đối với cơ sở dữ liệu. Tất nhiên sẽ luôn có một ngoại lệ đối với quy tắc này. –