2012-01-08 28 views
36

Tôi có một bảng như thế này:Làm thế nào để chèn các giá trị mặc định trong bảng SQL?

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

Tôi muốn chèn một hàng trong đó có các giá trị mặc định cho field2 và Field4.

Tôi đã thử insert into table1 values (5,null,10,null) nhưng nó không hoạt động và ISNULL(field2,default) cũng không hoạt động.

Làm cách nào tôi có thể yêu cầu cơ sở dữ liệu sử dụng giá trị mặc định cho cột khi tôi chèn hàng?

+2

Xem thêm [câu hỏi này] (http://stackoverflow.com/questions/25900996) cho trường hợp * tất cả * các cột có giá trị mặc định. – stakx

Trả lời

52

Just không bao gồm các cột mà bạn muốn sử dụng giá trị mặc định cho trong câu lệnh chèn của bạn. Ví dụ:

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

... sẽ mất các giá trị mặc định cho field2field4, và gán 5 đến field1 và 10 đến field3.

+1

Điều gì xảy ra nếu cột không xác định giá trị mặc định và cũng được đặt thành "NOT ALLOW NULLS"? – Danon

4

Hãy thử nó như thế này

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

Sau đó, field2 và Field4 nên có giá trị mặc định.

2

Nếu cột của bạn không được chứa giá trị NULL, bạn cũng cần xác định các cột là NOT NULL, nếu không đường được chuyển trong NULL sẽ được sử dụng thay cho mặc định và không tạo ra lỗi.

Nếu bạn không vượt qua trong giá trị bất kỳ đến các lĩnh vực này (mà đòi hỏi bạn phải xác định các lĩnh vực mà bạn làm muốn sử dụng), giá trị mặc định sẽ được sử dụng:

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

Để chèn các giá trị mặc định, bạn nên bỏ qua chúng một cái gì đó như thế này:

Insert into Table (Field2) values(5) 

Tất cả các lĩnh vực khác sẽ có giá trị null hoặc mặc định của họ nếu nó đã được xác định.

97

Thực hành tốt nhất nó để liệt kê các cột của bạn vì vậy bạn không phụ thuộc vào những thay đổi bảng (cột mới hoặc để cột vv)

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

Tuy nhiên, nếu bạn không muốn làm điều này, sử dụng từ khóa DEFAULT

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

Tuyệt vời! Điều này thật đúng với gì mà tôi đã tìm kiếm.Lưu ý: bạn cũng có thể chỉ định các cột và giá trị, chuyển DEFAULT thay vì NULL và bạn sẽ nhận được giá trị mặc định nếu có ràng buộc DEFAULT hoặc NULL nếu cột là nullable và không có ràng buộc mặc định nào được chỉ định. – 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

Tôi không nghĩ đây là câu trả lời. –

4

cách tốt nhất là:

insert your_table 
default values 
+0

Điều này hoạt động nếu tất cả các cột có mặc định được liên kết và một cột không muốn chỉ định tên cột. – umbersar

0

Bạn có thể viết theo cách này

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 
Các vấn đề liên quan