Как вставить значения по умолчанию в таблицу SQL? - PullRequest
56 голосов
/ 08 января 2012

У меня есть такая таблица:

create table1 (field1 int,
               field2 int default 5557,
               field3 int default 1337, 
               field4 int default 1337)

Я хочу вставить строку со значениями по умолчанию для field2 и field4.

Я пробовал insert into table1 values (5,null,10,null), но он не работает и ISNULL(field2,default) тоже не работает.

Как я могу указать базе данных использовать значение по умолчанию для столбца при вставке строки?

Ответы [ 8 ]

128 голосов
/ 08 января 2012

Рекомендуется перечислять столбцы, чтобы вы не зависели от изменений таблицы (порядок новых столбцов или столбцов и т. Д.)

insert into table1 (field1, field3)  values (5,10)

Однако, если вы не хотите этого делать, используйте ключевое слово DEFAULT

insert into table1 values (5, DEFAULT, 10, DEFAULT)
64 голосов
/ 08 января 2012

Только не включайте столбцы, для которых вы хотите использовать значение по умолчанию в вашем операторе вставки.Например:

INSERT INTO table1 (field1, field3) VALUES (5, 10);

... примет значения по умолчанию для field2 и field4 и назначит 5 для field1 и 10 для field3.

23 голосов
/ 25 июня 2017

Лучший способ это:

insert your_table
default values
5 голосов
/ 08 января 2012

Попробуйте это так

INSERT INTO table1 (field1, field3) VALUES (5,10)

Тогда для field2 и field4 должны быть заданы значения по умолчанию.

3 голосов
/ 08 января 2012

Если ваши столбцы не должны содержать NULL значений, вам также необходимо определить столбцы как NOT NULL, в противном случае переданный в NULL будет использоваться вместо значения по умолчанию и не приведет к ошибке.

Если вы не передадите любое значение в эти поля (для этого необходимо указать поля, которые вы делаете хотите использовать), будут использованы значения по умолчанию:

INSERT INTO 
  table1 (field1, field3) 
VALUES   (5,10)
1 голос
/ 08 февраля 2018

Вы можете написать таким образом

GO
ALTER TABLE Table_name  ADD
column_name decimal(18, 2) NOT NULL CONSTRAINT Constant_name DEFAULT 0
GO
ALTER TABLE Table_name SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
0 голосов
/ 30 июня 2015
CREATE PROC SP_EMPLOYEE                             --By Using TYPE parameter and CASE  in Stored procedure
(@TYPE INT)
AS
BEGIN
IF @TYPE=1
BEGIN
SELECT DESIGID,DESIGNAME FROM GP_DESIGNATION
END
IF @TYPE=2
BEGIN
SELECT ID,NAME,DESIGNAME,
case D.ISACTIVE when 'Y' then 'ISACTIVE' when 'N' then 'INACTIVE' else 'not' end as ACTIVE
 FROM GP_EMPLOYEEDETAILS ED 
  JOIN  GP_DESIGNATION D ON ED.DESIGNATION=D.DESIGID
END
END
0 голосов
/ 08 января 2012

Чтобы вставить значения по умолчанию, вы должны опустить их примерно так:

Insert into Table (Field2) values(5)

Все остальные поля будут иметь значение NULL или их значения по умолчанию, если оно определено.

...