2011-08-16 32 views
20

Tôi cần phải làm một cái gì đó đơn giản - chèn một hàng vào MySQL (với PHP) nhưng không có giá trị. Bảng MySQL sẽ có các giá trị mặc định cần thiết, vì vậy tôi không cần chèn bất kỳ giá trị nào. Câu lệnh chèn sẽ trông như thế nào nếu không có các giá trị để chèn?Làm cách nào để chèn một hàng không có bất kỳ giá trị nào để tất cả các cột giả sử giá trị mặc định của chúng?

Trả lời

39
INSERT INTO my_table VALUES() 
+1

Đây thực sự là câu trả lời đúng cho MySQL. –

+1

Làm việc với mariadb - 10.0.31-MariaDB – MarcoZen

9

Trong SQL Server, nó giống như thế này.

insert into TableName default values 
+1

+1 Hehe đánh bại tôi sau 2 giây :) Chúc mừng – Andomar

+1

+1 vì nó cũng hoạt động với Sqlite. – ceving

+0

Điều này không làm việc cho tôi với MySQL - và câu hỏi là về MySQL (xem thẻ). Hoặc tôi đã làm gì sai và cú pháp này thường làm việc trong MySQL quá? –

1

Bạn có thể sử dụng default values:

insert YourTable default values 
5

Cách đúng là để cung cấp một danh sách các giá trị rỗng và để cho các lĩnh vực có giá trị mặc định của họ ngầm:

INSERT INTO `table`() VALUES(); 

Ngoài bạn có thể sử dụng từ khóa DEFAULT:

INSERT INTO `table` (`Col1`, `Col2`, ...) VALUES(DEFAULT, DEFAULT, ...); 

Hoặc (giả sử bạn đang đem lại giá trị cho tất cả các cột) chỉ:

INSERT INTO `table` VALUES(DEFAULT, DEFAULT, ...); 

Tất cả các thông tin cần thiết có thể được tìm thấy trong the documentation for INSERT:

Nếu bạn không chỉ định danh sách tên cột cho INSERT ... VALUES hoặc INSERT ... SELECT, giá trị cho mỗi cột trong bảng phải là được cung cấp bởi danh sách VALUES hoặc câu lệnh SELECT. Nếu bạn không biết thứ tự của các cột trong bảng, hãy sử dụng DESCRIBE tbl_name để tìm hiểu.

[..]

Nếu bạn không chạy trong chế độ SQL nghiêm ngặt, bất kỳ cột nào không rõ ràng được đưa ra một giá trị được thiết lập mặc định của nó giá trị (rõ ràng hoặc ngầm). Ví dụ , nếu bạn chỉ định danh sách cột không đặt tên tất cả các cột trong bảng, cột chưa đặt tên được đặt thành giá trị mặc định của chúng. Phân bổ giá trị mặc định được mô tả trong Phần 10.1.4, “Kiểu dữ liệu Giá trị mặc định”. Xem thêm Phần 1.8.6.2, “Các ràng buộc trên Dữ liệu không hợp lệ”.

[..]

Sử dụng từ khóa DEFAULT để thiết lập một cột một cách rõ ràng để giá trị mặc định của nó . Điều này giúp dễ dàng viết các câu lệnh INSERT gán giá trị cho tất cả trừ một vài cột, vì nó cho phép bạn tránh viết danh sách GIÁ TRỊ không hoàn chỉnh không bao gồm giá trị cho mỗi cột trong bảng. Nếu không, bạn sẽ phải viết ra danh sách các tên cột tương ứng với từng giá trị trong danh sách GIÁ TRỊ.

[..]

Nếu cả hai danh sách cột và danh sách VALUES không trống rỗng, INSERT tạo liên tiếp với mỗi cột thiết lập để giá trị mặc định của nó:

INSERT INTO tbl_name() VALUES(); 

[..]

Trong chế độ nghiêm ngặt , một lỗi xảy ra nếu bất kỳ cột nào không có giá trị mặc định là . Nếu không, MySQL sẽ sử dụng giá trị mặc định ngầm cho bất kỳ cột nào không có mặc định được xác định rõ ràng.

+0

'INSERT INTO table_name DEFAULT' không hoạt động trong MySQL. Sử dụng 'INSERT INTO table_name VALUES()' để thay thế. – izogfif

+0

'HIỂN THỊ VARIABLES LIKE 'sql_mode';' cho 'STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION', vì vậy tôi tin rằng đó là chế độ SQL Strict. Khi l thực thi truy vấn 'INSERT INTO table_name DEFAULT;' nó đưa ra lỗi 'Lỗi SQL (1064): Bạn có một lỗi trong cú pháp SQL của bạn; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn cho cú pháp đúng để sử dụng gần 'DEFAULT' ở dòng 1'. Tôi đã chỉ ra rằng bạn đã đưa ra hai lựa chọn thay thế và cái đầu tiên không hoạt động trong trường hợp MySQL. – izogfif

+0

@izogfif: Điều đó có vẻ chính xác, cảm ơn –

Các vấn đề liên quan