我有SQL表:如何检查是否插入或更新会影响选择查询的结果
CREATE TABLE station
(title CHAR(256) PRIMARY KEY,
city CHAR(20),
latitude REAL,
longitude REAL);
而且我有一些疑问,例如Q1:
SELECT * FROM station WHERE latitude > 50 AND longitude > 90;
Q2:
SELECT * FROM station WHERE latitude > 50 OR longitude > 90;
如何确定t帽子旁边插入查询:
INSERT INTO station VALUES ("Station 1", "London", 60, 10)
将改变Q2的结果,但不是Q1?
假设选择查询可以是无限复杂的,有时可能很难回答这样的问题,这就是为什么误报是合适的。
换句话说,我该如何编写这样的函数(Python)?
def can_affect(insert_query: str, select_query: str) -> bool:
"""
Tells if particular insert query can affect results of select query.
Returns False if there is no chance that insert will affect select query.
Otherwise, returns True.
"""
您正在测试的查询是否只处理单个表?或者是否会出现与其他表的连接是查询的一部分的情况? – MikeTheReader
@MikeTheReader,是的,查询可以包含连接到其他表。例如,当给出“SELECT a JOIN b JOIN c”**和**“INSERT INTO d”**时,函数必须返回** False **。 –