- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以限制 PostgreSQL 中整数数据类型列中允许的位数。我有以下示例:
CREATE TABLE bank_accounts (
id SERIAL PRIMARY KEY
, number_account INTEGER(26) NOT NULL
);
我们可以输入如下内容:
1 -- one digit
23 -- two digits
444 -- three digits
5555 -- four digits
等等。 ...最多 26 位数字。
但我想限制我的列以恰好 26 位数字存储,不能少也不能多。如何实现?
最佳答案
银行帐号本质上不是整数。无论如何,26 位十进制数字对于 integer
or bigint
来说太多了。
银行帐号根本不是数值,真的,即使我们可以使用类型 numeric
进行存储。它可以轻松处理 26 位十进制数字。但它也允许小数位(和其他装饰器, like @klin commented )。您可以限制为 numeric(26)
,这是 numeric(26,0)
的缩写,以从存储中删除小数位。但这仍然允许输入小数位,然后四舍五入。和其他装饰器。所有这些对于银行帐号来说似乎都是不可取的:
SELECT numeric(26) '12345678901234567890123456'
, numeric(26) '12345678901234567890123456.4' -- rounded down
, numeric(26) '12345678901234567890123456.5' -- rounded up
, numeric(26) '1e25'
, numeric(26) '1.2345e25'
, numeric(26) '+12345678901234567890123456.5'
SELECT numeric(26) '99999999999999999999999999.5' -- error after rounding up
银行帐号本质上更像文本,因此数据类型 text
似乎更合适 ( like @klin provided ),即使它在磁盘上占用更多空间 ( like @a_horse mentioned )。 27 字节对 numeric
17 字节 - 或者 30 对 RAM 中的 20 字节。见:
但是,您不希望将 collation rules 应用于银行帐号。如果您的数据库集群在非 C 语言环境下运行,则这种情况会发生在 text
或 varchar
等可整理类型上。仅以数字开头将是徒劳的。但是你仍然会得到更慢的排序和更慢的索引等。值得注意的是,Postgres 9.5 或更高版本中的 "abbreviated keys" feature 当前(包括 Postgres 10) disabled for non-C locales 。
将所有内容放在一起,我建议:
CREATE TABLE bank_account (
bank_account_id serial PRIMARY KEY
-- bank_account_id integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY -- in Postgres 10+
, number_account text COLLATE "C" NOT NULL -- disable collation rules
, CONSTRAINT number_account_has_26_digits CHECK (number_account ~ '^\d{26}$')
);
旁白:
考虑 IDENTITY
列而不是 Postgres 10+ 中的 serial
。详情:
在 Postgres 中不是有效语法,其中 INTEGER(26)
integer
data type 没有修饰符。您可以从 int2
、int4
(默认 integer
)和 int8
中进行选择,不过 - 悬挂数字表示占用的字节数,而不是允许的位数。
关于sql - 如何指定银行帐号的最小和最大数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46873492/
你们用什么来生成唯一帐号?有些使用 Autoinc 字段,有些使用其他东西......什么是正确的方法,即在运行插入查询之前获取帐号? 最佳答案 如果您使用的是 SQL 数据库,请使用生成器。如果您想
希望扩大提问的范围here ,关于查找密码为空的用户。我想要的是过滤掉该行的系统帐户 sudo getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1 当我运
我有一个以 Stripe 和 Laravel 作为后端的当前设置。一切都按预期完美运行,但我有一个关于安全性的问题。 因为我有一个 React 前端来接受付款,所以我使用包 @stripe/react
有人知道如何使用 AWS Powershell 获取 AWS 帐号吗?看起来没有可用的 API。 最佳答案 漂亮又简单 (Get-STSCallerIdentity).Account ...或 (Ge
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我的代码: Account[] accts = mgr.getAccountsByType("com.google"); Account acct = accts[0]; System.out.pri
为了自动化,我希望我的 IAM 策略是通用的。 我知道 ${aws:username} 获取它所应用到的策略的用户名。 是否可以在 IAM 策略中使用类似 arn:aws:iam::123456789
我们正在 AWS 上为我们的内部组织构建一项服务,以根据此处的引用文档管理其 AWS 账户。 引用号:http://docs.aws.amazon.com/IAM/latest/UserGuide/i
如何根据托管在亚马逊的 EC2 实例 ip 获取 aws 帐号/id 我有一个实例名称 CTI 服务器,它托管在一个 AWS 账户中。 我有 CTI 服务器的详细信息,例如私有(private) ip
我是一名优秀的程序员,十分优秀!