تحديث/حدد من الجدول في الاستعلام?
-
09-06-2019 - |
سؤال
أنا بحاجة إلى تحديد البيانات عندما وينظر في الصفحة وتحديث 'آراء' عمود هل هناك طريقة للقيام بذلك في استعلام واحد أو لا بد لي من استخدام متميزة الاستفسارات?
المحلول
إذا كنت لا تريد/تحتاج إلى استخدام المعاملات ، يمكنك إنشاء إجراء مخزن التحديثات الأولى على عدد مرات المشاهدة ثم يختار القيم وإعادتها إلى المستخدم.
نصائح أخرى
سيكون لديك للقيام بذلك في بيانين في صفقة واحدة
Begin Tran
Update Pages Set Views = Views + 1 Where ID = @ID
Select Columns From Pages Where ID = @ID
Commit Tran
سيكون من المفيد إذا كنت سرد RDBMS كنت تستخدم SQL Server قد خرج بيان
على سبيل المثال
USE AdventureWorks;
GO
DECLARE @MyTestVar table (
OldScrapReasonID int NOT NULL,
NewScrapReasonID int NOT NULL,
WorkOrderID int NOT NULL,
ProductID int NOT NULL,
ProductName nvarchar(50)NOT NULL);
UPDATE Production.WorkOrder
SET ScrapReasonID = 4
OUTPUT DELETED.ScrapReasonID,
INSERTED.ScrapReasonID,
INSERTED.WorkOrderID,
INSERTED.ProductID,
p.Name
INTO @MyTestVar
FROM Production.WorkOrder AS wo
INNER JOIN Production.Product AS p
ON wo.ProductID = p.ProductID
AND wo.ScrapReasonID= 16
AND p.ProductID = 733;
SELECT OldScrapReasonID, NewScrapReasonID, WorkOrderID,
ProductID, ProductName
FROM @MyTestVar;
GO
كيو هو التحديث البيان العائدين شرط أن عودة مجموعة نتائج مثل SELECT:
UPDATE mytable
SET views = 5
WHERE id = 16
RETURNING id, views, othercolumn;
أنا متأكد أن هذا ليس معيار على الرغم من.أنا لا أعرف إذا كان أي قواعد بيانات أخرى لتنفيذ ذلك.
تحرير:لقد لاحظت فقط أن سؤالك له "الخلية" الوسم.ربما يجب أن نذكر أنه في السؤال نفسه.انها جيدة بيانات عامة على الرغم من سؤال - وأود أن نرى كيف نفعل ذلك في قواعد البيانات الأخرى.
لقد استخدمت هذه الخدعة مع جافا و SQL Server سيتم أيضا تمكنك من إرسال الأمرين في واحد PreparedStatement.
update tablex set y=z where a=b \r\n select a,b,y,z from tablex
هذا سوف تحتاج إلى أن تكون في قراءة الصفقة التي ارتكبت على العمل كما كنت أعتقد أنه ينبغي على الرغم من.