gpt4 book ai didi

在 smallint 中记录 uint 的 PostgreSQL 函数

转载 作者:行者123 更新时间:2023-11-29 13:26:53 25 4
gpt4 key购买 nike

我想将一个 unsigned int(0 到 65535)存储到一个 smallint 中。

我希望是这样的:

CAST(($1 - 32768) AS smallint)

我的表有一列

version smallint NOT NULL

我该怎么做 INSERT INTO mytable SET(1); 它会记录 -32767当我 SELECT version from myTable; 时,它会返回 1 ?

最佳答案

您可以在表的顶部创建一个 View ,它选择 (version + 32768) 作为版本( View 的这一列将是 int 类型。您也可以添加显式转换) .然后你应该查询这个 View 而不是原始表来获取 0-65535 之间的值。

例子:

CREATE VIEW myTableView AS SELECT col1, col2, (version::int + 32768) as version FROM myTable;

现在,SELECT version FROM myTableView 将返回 0 到 65535 之间的值。

对于 INSERT,您可以为 myTableView 创建一个 INSTEAD OF INSERT 触发器,它将 (version - 32768)::smallint 插入到 myTable 中。这应该很容易,但我现在无法测试,所以我不提供示例。

关于在 smallint 中记录 uint 的 PostgreSQL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32229045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com