2012-01-08 3 views
36

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

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

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

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

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

+2

Смотрите также [этот вопрос] (http://stackoverflow.com/questions/25900996) для случая, когда * все * столбцы имеют значения по умолчанию. – stakx

ответ

52

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

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

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

+1

Что делать, если столбец не задал значения по умолчанию, а также установлен в значение "NOT ALLOW NULLS"? – Danon

4

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

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

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

2

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

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

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

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

Insert into Table (Field2) values(5) 

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

97

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

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

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

insert into table1 values (5, DEFAULT, 10, DEFAULT) 
+7

Удивительный! Это именно то, что я искал.Примечание: вы также можете указывать столбцы и значения, передавая DEFAULT вместо NULL, и вы получите значение по умолчанию, если существует ограничение DEFAULT, или NULL, если столбец имеет значение NULL и не задано ограничение по умолчанию. – John

-2
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 
+1

Я не думаю, что это ответ. –

4

лучший способ:

insert your_table 
default values 
+0

Это работает, если все столбцы имеют связанные значения по умолчанию, и никто не хочет указывать имена столбцов. – umbersar

0

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

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 
Смежные вопросы