【发布时间】:2017-09-25 16:11:39
【问题描述】:
我有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;
第二季度:
SELECT * FROM station WHERE latitude > 50 OR longitude > 90;
如何确定下一个插入查询:
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,是的,查询可以包含与其他表的连接。例如,当给出 "SELECT a JOIN b JOIN c" 和 "INSERT INTO d" 时,函数必须返回 False。
标签: python mysql sql database postgresql