Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更新/插入具有两个索引的联接表_Sql_Postgresql_Postgis - Fatal编程技术网

Sql 更新/插入具有两个索引的联接表

Sql 更新/插入具有两个索引的联接表,sql,postgresql,postgis,Sql,Postgresql,Postgis,我有一个PostGIS数据库,其中包含带有位置点的实体a和带有面积多边形的实体B 我有一个连接表C,它基本上跟踪谁在哪里,我想更新它。它是一个简单的计数器,可以递增,没有进一步的依赖关系 很容易找到谁在哪里: SELECT a.id, b.id FROM a, b WHERE ST_Contains(b.poly, a.location); 但是有可能在纯SQL中更新表C吗?它的结构很简单: Column | Type |

我有一个PostGIS数据库,其中包含带有位置点的实体a和带有面积多边形的实体B

我有一个连接表C,它基本上跟踪谁在哪里,我想更新它。它是一个简单的计数器,可以递增,没有进一步的依赖关系

很容易找到谁在哪里:

SELECT a.id, b.id FROM a, b WHERE ST_Contains(b.poly, a.location);
但是有可能在纯SQL中更新表C吗?它的结构很简单:

    Column    |   Type   |                           Modifiers                            
--------------+----------+----------------------------------------------------------------
 id           | integer  | not null
 a_id         | integer  | 
 b_id         | integer  | 
 counter      | smallint | not null
我想要的是以固定的间隔运行一个查询,根据位置增加计数器。但是,这可能是第一个实例,因此不能保证匹配行a_id,b_id已经存在


可能吗?

计数器的值是如何确定的?基于a_id和b_id组合的唯一值?不,它只是一个简单的计数器。我想以固定的时间间隔运行一个查询,只需更新它。每小时思考+1。计数器不应该只是一个串行类型,然后自动递增吗?c.id是如何确定的?c.id只是表的主键。我不知道你说的串行类型是什么意思,但我知道我想增加和减少计数器,有时会超过1,这就是为什么我使用smallint类型。串行只是一种自动递增的int数据类型。