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