Queries for PAGLOCK Table Hint


1. Usage of PAGLOCK table hint (to be used in transaction)

SQL Server Query 1

            
 BEGIN TRANSACTION  
SELECT
OD.OrderID,
OD.ProductID,
P.ProductName,
OD.Quantity,
OD.UnitPrice,
OD.Discount
FROM [Order Details] AS OD WITH (PAGLOCK) -- Read uncommitted data
JOIN Products AS P ON OD.ProductID = P.ProductID
WHERE OD.OrderID = 10248 -- See the newly inserted, uncommitted order details
OR (OD.OrderID = 10248 AND OD.ProductID = 11); -- See the updated, uncommitted order detail
ROLLBACK TRANSACTION

Create SQL query with SqlQueryBuilder 1

            
 var (sql1, parameters1) = new SqlQueryBuilder()  
.Select()
.Columns("OD.OrderID","OD.ProductID","P.ProductName","OD.Quantity","OD.UnitPrice","OD.Discount")
.From("[Order Details]","OD", new List<IHint>() { new PAGLOCK() })
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("Products","P")
.On(new Column("OD.ProductID").Equale(new Column("P.ProductID")))
})
.Where(new Where(new Column("OD.OrderID").Equale(10248)).OR()
.StartBracket(new Column("OD.OrderID").Equale(10248)).AND(new Column("OD.ProductID").Equale(11)).EndBracket())
.Build();

Query build by SqlQueryBuilder 1

            
SELECT OD.OrderID,
       OD.ProductID,
       P.ProductName,
       OD.Quantity,
       OD.UnitPrice,
       OD.Discount
FROM [Order Details] AS OD WITH (PAGLOCK)
     INNER JOIN
     Products AS P
     ON OD.ProductID = P.ProductID
WHERE OD.OrderID = @pMAIN_2507200206539577510
      OR (OD.OrderID = @pMAIN_2507200206539577511
          AND OD.ProductID = @pMAIN_2507200206539577512);


            
        

Parameters (If used)

Name Value
@pMAIN_2507200206539577510 10248
@pMAIN_2507200206539577511 10248
@pMAIN_2507200206539577512 11

Query Results 1:

  OrderID ProductID ProductName Quantity UnitPrice Discount
1 10248 11 Queso Cabrales 12 14.0000 0
2 10248 42 Singaporean Hokkien Fried Mee 10 9.8000 0
3 10248 72 Mozzarella di Giovanni 5 34.8000 0