Sql 如何为特定的新主键记录插入默认值记录?
我有一个名为myTable的表,其中有几个列,其中一些列有一个默认值,其余列的NULL是一个可能的和可接受的值 有一个名为pkVariable的主键,其余的列名为column2、column3、column4和column5。 column2和column3分别配置为获取默认值0和1,并配置为NOTNULL。 column4和column5没有默认值,但可能设置为空值 我的问题是,如何在myTable中插入新的“空”记录。我的意思是,我希望在myTable中的新记录中包含主键值、column2和column3的默认值以及column4和column5的NULL值 如果pkVariable有一个默认值或是一个标识,我可以这样做:Sql 如何为特定的新主键记录插入默认值记录?,sql,sql-server,sql-server-2008,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008,Sql Server 2008 R2,我有一个名为myTable的表,其中有几个列,其中一些列有一个默认值,其余列的NULL是一个可能的和可接受的值 有一个名为pkVariable的主键,其余的列名为column2、column3、column4和column5。 column2和column3分别配置为获取默认值0和1,并配置为NOTNULL。 column4和column5没有默认值,但可能设置为空值 我的问题是,如何在myTable中插入新的“空”记录。我的意思是,我希望在myTable中的新记录中包含主键值、column2和
INSERT INTO myTable DEFAULT VALUES;
INSERT INTO [myTable] ([pkVariable]) VALUES (pkValue) DEFUALT VALUES;
我不能买,因为pkVariable必须在INSERT子句中获取pkValue
我可以使用:
INSERT INTO myTable VALUES (pkValue, DEFAULT, DEFAULT, DEFAULT, DEFAULT);
它是有效的,但我不想依赖于列的数量
因此,实现我的目标的正确语法是什么
我错误地认为我能做到:
INSERT INTO myTable DEFAULT VALUES;
INSERT INTO [myTable] ([pkVariable]) VALUES (pkValue) DEFUALT VALUES;
想到这个方向,
WITH pkVariable = pkValue
INSERT INTO [myTable] DEFAULT VALUES;
还有其他建议吗?只是不包括您希望在插入中默认设置的列。如果不包括列,则将使用默认值
MYTABLE
-PKColumn IDENTITY(1,1)
-Column1 VARCHAR DEFAULT 'ColumnValue'
-Column2 INT
那么,您需要做的就是:
INSERT INTO MYTABLE (Column2) VALUES (123);
该行将作为
1|'ColumnValue'|123
请注意,默认值都是如何插入的只是不包括您希望在插入中默认的列。如果不包括列,则将使用默认值
MYTABLE
-PKColumn IDENTITY(1,1)
-Column1 VARCHAR DEFAULT 'ColumnValue'
-Column2 INT
那么,您需要做的就是:
INSERT INTO MYTABLE (Column2) VALUES (123);
该行将作为
1|'ColumnValue'|123
请注意默认值是如何全部插入的如果您试图说要输入具有特定主键的记录,请使用此选项
set identity_insert mytable on
insert into mytable (pkvariable) values (1)
set identity_insert mytable off
这假设您使用的是主键的自动递增标识。如果您试图说要输入具有特定主键的记录,请使用此选项
set identity_insert mytable on
insert into mytable (pkvariable) values (1)
set identity_insert mytable off
这假设您的主键使用的是自动递增标识。如果您的所有列都允许空值或具有默认值,并且您不想在insert上指定任何值,请尝试以下操作:
drop table #test
create table #test (id int identity, test varchar(10) default 'test' not null,
test2 varchar (10) null, test3 int default 1 not null)
insert into #test (test)
values (default)
select * from #test
如果所有列都允许空值或具有默认值,并且不希望在insert上指定任何值,请尝试以下操作:
drop table #test
create table #test (id int identity, test varchar(10) default 'test' not null,
test2 varchar (10) null, test3 int default 1 not null)
insert into #test (test)
values (default)
select * from #test
使用以下命令为PK ID列使用序列
nextval(“[序列名称]”::regclass)
然后,您可以使用
insert AS选择[which]
插入,使用以下命令为您的PK ID列使用序列
nextval(“[序列名称]”::regclass)
然后您可以使用插入作为选择[任何内容]