这是一个非常奇怪的,我正在尝试更新postgres表中的一行。我可以将它更新为我喜欢的任何值,除了-1(减1)。
这是我正在使用的更新声明......
UPDATE flight
SET turns = -1
WHERE (firstTime >= '24-Feb-2018 00:00:00'
AND lastTime <= '24-Feb-2018 23:59:00')
AND device = '3ECC38'
这是我用来检查结果的SELECT语句....
SELECT *
FROM flight
WHERE (firstTime >= '24-Feb-2018 00:00:00' AND lastTime <= '24-Feb-
2018 23:59:00' )
AND device = '3ECC38'
我可以编辑UPDATE查询以将'turns'设置为我喜欢的任何数字(正面或负面),SELECT语句指示UPDATE正常工作。唯一的例外是当我设置'turns = -1'时,我运行select语句,它显示turn已设置为11(11)。 该表上的错误是一致的,但我无法在任何类似的表上复制。 有一些奇怪的行为与此错误相关,例如我可以将'turns'设置为-2,如果我尝试将其递增1(SET turns = turns + 1),那么它的值变为11,而不是-1。
似乎有一种方法可以将'turn'设置为-1。我首先设置一些其他可接受的值(“SET turns = 2”)然后我可以通过“SET turns =”将其设置为-1 -1' :: INTEGER“
该表是使用此创建的....
CREATE TABLE public.flight
(
flightid SERIAL,
firstime timestamp without time zone,
lasttime timestamp without time zone,
deviceid character(6),
fixcount integer,
turns integer DEFAULT '-1'::integer
)
CREATE INDEX flight_idx_001
ON public.flight
USING btree
(deviceid COLLATE pg_catalog."default");
桌子上没有触发器。
我实际运行的DDL创建表默认为此....
turns INTEGER DEFAULT -1
pgAdmin3已将其更改为上面列出的
我从C#应用程序和PSQL控制台运行查询 - 结果是一样的。
我注意到另一个可能相关的“特征”。如果我将一个字段定义为一个整数并指定一个正的默认值,那么可以毫无困难地接受它,但是如果我指定一个负整数值,那么默认值将被修改为一个强制转换为整数的字符串。