sql – 在现有表上创建序列
发布时间:2020-12-12 06:55:53 所属栏目:MsSql教程 来源:网络整理
导读:如何在表格上创建序列,使其从0开始 – 最大值? 我尝试使用以下SQL代码,但它没有在我正在使用的表中插入任何值: CREATE SEQUENCE rid_seq;ALTER TABLE test ADD COLUMN rid INTEGER;ALTER TABLE test ALTER COLUMN rid SET DEFAULT nextval('rid_seq'); 我
如何在表格上创建序列,使其从0开始 – >最大值?
我尝试使用以下SQL代码,但它没有在我正在使用的表中插入任何值: CREATE SEQUENCE rid_seq; ALTER TABLE test ADD COLUMN rid INTEGER; ALTER TABLE test ALTER COLUMN rid SET DEFAULT nextval('rid_seq'); 我试图插入序列的表是另一个查询的输出。我无法弄清楚在初始查询期间添加序列是否更有意义,或者在执行查询后将序列添加到表中。 解决方法添加新列时设置默认值:create sequence rid_seq; alter table test add column rid integer default nextval('rid_seq'); 更改现有列的默认值不会更改现有数据,因为数据库无法知道应更改哪些值;在列值上没有“此列具有默认值”标志,只有默认值(原来是NULL,因为你没有指定任何其他内容)和当前值(也是NULL)但方法告诉“NULL”之间的区别因为它是默认的“和”NULL,因为它显式设置为NULL“。所以,当你分两步完成时: >添加列。 PostgreSQL不会将默认值应用于刚刚添加的列。但是,如果添加列并同时提供默认值,则PostgreSQL确实知道哪些行具有默认值(所有行),因此它可以在添加列时提供值。 顺便说一下,你可能也想在该列上使用NOT NULL: create sequence rid_seq; alter table test add column rid integer not null default nextval('rid_seq'); 并且,正如a_horse_with_no_name所述,如果您只打算将rid_seq用于test.rid列,那么您可能需要set its owner column到test.rid,以便在删除列时删除序列: alter sequence rid_seq owned by test.rid; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |