Sql Server Return bool if item is available in table
本问题已经有最佳答案,请猛点这里访问。
我的
我想向列插入值,但首先检查值是否已存在于表中。 因为那样我将更新项目的
在我的脑海中,我有一个方法,通过给定的
有一种常见的模式称为UPSERT。 在Sql Server中,使用MERGE语句执行UPSERT。
1 2 3 4 5 6 7 8 | MERGE tblStockManagement AS target USING (SELECT @clientID, @foldingId, @quantity) AS source (clientID, foldingID, quantity) ON (target.clientID = source.clientID AND target.foldingID = source.foldingID) WHEN MATCHED THEN UPDATE SET quantity = source.quantity WHEN NOT MATCHED THEN INSERT (clientID, foldingID, quantity) VALUES (source.clientID, source.foldingID, source.quantity); |
正如Joel在他的回答中所说,这是SQL中的一个常见问题,称为UPSERT。 但是,如果您使用的是无法访问MERGE(2005或更早版本)的Sql Server版本,则可以通过执行以下操作来实现"长途"的相同目标。
1 2 3 4 5 6 7 8 9 10 11 12 13 | BEGIN TRANSACTION IF EXISTS(SELECT 1 FROM tblStockManagement WITH (UPDLOCK, HOLDLOCK) WHERE clientID = @clientID and foldingID = @foldingID) BEGIN UPDATE tblStockManagement SET quantity = @quantity WHERE clientID = @clientID and foldingID = @foldingID END ELSE BEGIN INSERT INTO tblStockManagement (clientID, foldingID, quantity) VALUES (@clientID, @foldingID, @quantity); END COMMIT |
在select上执行
手动检查,
首先,检查Client_ID和FoldingID是否存在于数据库中,如果entry!= null,则不添加new,否则添加new ...