У меня есть таблица как это:
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)
не работает также.
Как я могу сказать базе данных использовать значение по умолчанию для столбца, когда я вставляю строку?
Просто не включайте столбцы, для которых Вы хотите использовать значение по умолчанию в Вашем операторе вставки. Например:
INSERT INTO table1 (field1, field3) VALUES (5, 10);
... возьмет значения по умолчанию для field2
и field4
и присвоит 5 field1
и 10 к field3
.
Лучшая практика это для списка столбцов, таким образом, Вы независимы от изменений таблицы (новый столбец или порядок столбцов и т.д.)
insert into table1 (field1, field3) values (5,10)
Однако, если Вы не хотите делать это, используйте DEFAULT
ключевое слово
insert into table1 values (5, DEFAULT, 10, DEFAULT)
Лучший способ:
insert your_table
default values
Попробуйте его как это
INSERT INTO table1 (field1, field3) VALUES (5,10)
Затем field2, и field4 должен иметь значения по умолчанию.
Если Ваши столбцы не должны содержать NULL
значения, необходимо определить столбцы как NOT NULL
также, иначе переданный в NULL
будет использоваться вместо значения по умолчанию и не произведет ошибку.
, Если Вы не передаете в никакой значение к этим полям (который требует, чтобы Вы указали поля, которые Вы делаете , хотят использовать), значения по умолчанию будут использоваться:
INSERT INTO
table1 (field1, field3)
VALUES (5,10)
Можно записать таким образом
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
Для вставки значений по умолчанию, необходимо опустить их что-то вроде этого:
Insert into Table (Field2) values(5)
Все другие поля будут иметь пустой указатель или их значения по умолчанию, если он определил.
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