2012-01-31 12 views
0

Im пытается установить значение по умолчанию для поля в таблицу SQL Server. Это поле является int, и когда я перехожу к GUI, и я устанавливаю значение связанного значения по умолчанию равным 0, и я сохраняю таблицу, чем значение по умолчанию будет ((0)) (и когда я вставляю запись, он получает значение NULL).Как установить значение по умолчанию для SQL Server?

Почему? Как я могу это исправить?

+1

Можете ли вы показать инструкцию * exact * insert, которую вы используете? – MonkeyCoder

ответ

1

Вы отправляете NULL.

Если вы хотите использовать по умолчанию, то не указывать его или использовать ключевое слово по умолчанию

INSERT (col1, col3) -- col2 is skipped, gets zero default 
VALUE (foo, bar) 

INSERT (col1, col2, col3) 
VALUE (foo, DEFAULT, bar) 

INSERT -- not best practice 
VALUE (foo, DEFAULT, bar) 
+0

Нет, я не посылаю NULL, я просто ничего не посылаю! Также попытался с DEFAULT, но он не работает (он всегда получает NULL): O – markzzz

+0

@markzzz: тогда вы ** не ** имеете значение по умолчанию. * Проверьте *, прежде чем опровергать меня, пожалуйста, – gbn

+1

@markzzz Чтобы все было ясно для всех, разместите свой код таблицы создания и код вставки. – DavidGouge

0

Я только что создал таблицу следующим образом, а значение по умолчанию для testid2 работает так, как ожидалось.

USE [db] 
GO 
/****** Object: Table [dbo].[Table_1] Script Date: 01/31/2012 10:27:51 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[Table_1](
[testid] [int] NULL, 
[testid2] [int] NOT NULL CONSTRAINT [DF_Table_1_testid2] DEFAULT ((0)) 
) ON [PRIMARY] 

Если вы щелкните правой кнопкой мыши на своем столе, стол скрипта как ..., СОЗДАЙТЕ, а затем проверьте свой результат против моего.

0

Если он вставляет NULL, потому что вы, вероятно, указав имя столбца в запросе.

Если вы:

вставки в таблицу (defaultColumn) значения (NULL)

будет игнорировать ограничение по умолчанию и вставить NULL

Есть несколько сценариев. Попытайтесь опубликовать свой запрос, чтобы мы могли его проанализировать.