我想查询一个表以查看是否存在任何具有'A'类型的行。 所以我用这个sql:
SELECT EXISTS(select * from %T where type = 'A');
然后我需要将另一个表的列值更新为上面的结果。为了防止在更新期间发生带有'A'类型的插入,我打算使用锁。但锁是非常昂贵的,还有其他替代方法来做到这一点没有锁定?
如果我们必须使用lock,我想如果表已经有了类型A,则在更新期间不需要锁定插入,因为结果仍然是1.只有在没有类型A的行时才阻止插入。怎么做?
谢谢!
答案 0 :(得分:0)
由于您希望在有类型' A'时更新表格,通常我建议您在插入或删除行后立即进行更新或检查。
或者你可以这样做:
UPDATE table1 t1
LEFT JOIN table2 t2 ON t1.type = t2.type
SET t1.column1 = 1
WHERE t2.type IS NOT NULL
或
UPDATE table1 t1
SET t1.column1 = 1
WHERE EXISTS (
SELECT ...
FROM table2
WHERE type = 'A'
);
请给我更多详细信息,例如您的餐桌是什么以及您想要做什么,以便我们进一步讨论。