【发布时间】:2020-06-02 18:33:19
【问题描述】:
我有一堆在主键上带有“serial”关键字的表,这样自动增量就可以工作了。问题是我可以使用任何覆盖自动增量的 ID 号进行查询以插入一行。是否有一个原因?或者,有没有办法阻止用户添加/更改此值?
这是我的表配置示例:
create table if not exists departments (
department_id serial primary key,
name varchar(64) not null unique
);
如果我运行以下查询,我可以将任意数字添加到主键:
insert into departments (department_id, name) values (9001, 'FooBar')
我想我想防止这种情况发生。我想听听一些意见。
【问题讨论】:
-
'serial' 是表格行的名称还是单元格中的值?,如果它被定义为主键并且你尝试插入一个现有的数字,它会抛出一个错误。
-
'serial' 是 postgresql 中允许自动递增的关键字。我会用更多信息更新我的问题。
-
你运行的是什么版本的 postgresql?
-
@BarryPiccinni 我认为是 11。它是 aws RDS,似乎无法使用他们的门户找到完整的版本号。
-
有几种方法可以做到这一点。我使用的一种方法是创建一个触发器,该触发器使用序列中的下一个值更新列,无论您插入什么。你可以在这里阅读:dba.stackexchange.com/questions/116054/…
标签: sql postgresql