我有一张这样的表:
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)
也不起作用。
如何在插入行时告诉数据库使用列的默认值?
答案 0 :(得分:126)
最好列出您的列,这样您就可以独立于表格更改(新列或列顺序等)
insert into table1 (field1, field3) values (5,10)
但是,如果您不想这样做,请使用DEFAULT
关键字
insert into table1 values (5, DEFAULT, 10, DEFAULT)
答案 1 :(得分:64)
只是不要在insert语句中包含要使用默认值的列。例如:
INSERT INTO table1 (field1, field3) VALUES (5, 10);
...将采用field2
和field4
的默认值,并将5分配给field1
,将10分配给field3
。
答案 2 :(得分:19)
最好的方法是:
insert your_table
default values
答案 3 :(得分:5)
尝试这样
INSERT INTO table1 (field1, field3) VALUES (5,10)
然后field2和field4应该有默认值。
答案 4 :(得分:3)
如果您的列不应包含NULL
值,则还需要将列定义为NOT NULL
,否则将使用传入的NULL
而不是默认值而不会生成错误。
如果您没有将任何值传递给这些字段(这要求您指定 想要使用的字段),则会使用默认值:
INSERT INTO
table1 (field1, field3)
VALUES (5,10)
答案 5 :(得分:1)
你可以用这种方式写作
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
答案 6 :(得分:0)
要插入默认值,您应该省略它们:
Insert into Table (Field2) values(5)
如果已定义,则所有其他字段将为null或其默认值。
答案 7 :(得分:0)
CREATE TABLE #dum (id int identity(1,1) primary key, def int NOT NULL default(5), name varchar(25))
-- this works
INSERT #dum (def, name) VALUES (DEFAULT, 'jeff')
SELECT * FROM #dum;
DECLARE @some int
-- this *doesn't* work and I think it should
INSERT #dum (def, name)
VALUES (ISNULL(@some, DEFAULT), 'george')
SELECT * FROM #dum;
答案 8 :(得分:0)
我有一个案例,我有一个非常简单的表格,我基本上只想要一个只有默认值的额外行。不确定是否有更漂亮的方法,但这是一种方法:
这会将新行中的每一列设置为其默认值:
INSERT INTO your_table VALUES ()
注意:这对 MySQL 尤其有用, INSERT INTO your_table DEFAULT VALUES
不起作用。
答案 9 :(得分:-3)
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