Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何为特定的新主键记录插入默认值记录?_Sql_Sql Server_Sql Server 2008_Sql Server 2008 R2 - Fatal编程技术网

Sql 如何为特定的新主键记录插入默认值记录?

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和

我有一个名为myTable的表,其中有几个列,其中一些列有一个默认值,其余列的NULL是一个可能的和可接受的值

有一个名为pkVariable的主键,其余的列名为column2、column3、column4和column5。 column2和column3分别配置为获取默认值0和1,并配置为NOTNULL。 column4和column5没有默认值,但可能设置为空值

我的问题是,如何在myTable中插入新的“空”记录。我的意思是,我希望在myTable中的新记录中包含主键值、column2和column3的默认值以及column4和column5的NULL值

如果pkVariable有一个默认值或是一个标识,我可以这样做:

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)

然后您可以使用
插入作为选择[任何内容]