Câu hỏi khá thẳng về phía trước ở đây, tôi nghĩ rằng điều này sẽ hoạt động nhưng nó không. Tại sao không?
CREATE TABLE INVOICE[
INVOICEDATE DATE NOT NULL DEFAULT CURRENT_DATE
]
Đã hỏi ngày 9 tháng 12 năm 2013 lúc 0:18Dec 9, 2013 at 0:18
2
Nó không hoạt động vì nó không được hỗ trợ
Điều khoản
DEFAULT
chỉ định giá trị mặc định cho một cột. Với một ngoại lệ, giá trị mặc định phải là một hằng số; Nó không thể là một chức năng hoặc một biểu thức. Điều này có nghĩa là, ví dụ, bạn không thể đặt mặc định cho cột ngày là giá trị của một hàm nhưNOW[]
hoặcCURRENT_DATE
. Ngoại lệ là bạn có thể chỉ định0 là mặc định cho cộtCREATE TABLE INVOICE[ INVOICEDATE DATE DEFAULT [CURRENT_DATE] ]
1CREATE TABLE INVOICE[ INVOICEDATE DATE DEFAULT [CURRENT_DATE] ]
//dev.mysql.com/doc/refman/5.5/en/create-table.html
Đã trả lời ngày 9 tháng 12 năm 2013 lúc 0:19Dec 9, 2013 at 0:19
Zerkmszerkmszerkms
245K67 Huy hiệu vàng430 Huy hiệu bạc532 Huy hiệu Đồng67 gold badges430 silver badges532 bronze badges
6
Theo tài liệu này, bắt đầu trong MySQL 8.0.13, bạn sẽ có thể chỉ định:
CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
MySQL 8.0.13 đã được phát hành cho tính khả dụng chung vào tháng 10 năm 2018. Thông tin phát hành được đặt tại đây.
Đã trả lời ngày 6 tháng 8 năm 2018 lúc 13:56Aug 6, 2018 at 13:56
Amos longamos dàiAmos Long
74310 Huy hiệu bạc14 Huy hiệu đồng10 silver badges14 bronze badges
1
Khai báo cột ngày của bạn không phải là NULL, nhưng không có mặc định. Sau đó thêm trình kích hoạt này:
USE `ddb`;
DELIMITER $$
CREATE TRIGGER `default_date` BEFORE INSERT ON `dtable` FOR EACH ROW
if [ isnull[new.query_date] ] then
set new.query_date=curdate[];
end if;
$$
delimiter ;
Đã trả lời ngày 12 tháng 5 năm 2014 lúc 22:00May 12, 2014 at 22:00
user3630264user3630264user3630264
3813 Huy hiệu bạc3 Huy hiệu đồng3 silver badges3 bronze badges
1
Hiện tại từ
CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
2, bạn có thể đặt phần sau thành cột CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
3:Trong
CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
4, trong trường CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
5 bên cạnh cột, viết: CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
6Nếu bạn chỉ đặt
CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
7, nó sẽ thất bại. Bạn cần thêm CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
8 và CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
9 ở đầu và cuối.Đã trả lời ngày 2 tháng 6 năm 2020 lúc 8:53Jun 2, 2020 at 8:53
t1ft1ft1f
2.9413 huy hiệu vàng31 Huy hiệu bạc57 Huy hiệu đồng3 gold badges31 silver badges57 bronze badges
8
create table the_easy_way[
capture_ts DATETIME DEFAULT CURRENT_TIMESTAMP,
capture_dt DATE AS [DATE[capture_ts]]
]
[MySQL 5.7]
Đã trả lời ngày 31 tháng 3 năm 2018 lúc 20:42Mar 31, 2018 at 20:42
Tôi có phiên bản mới nhất hiện tại của MySQL: 8.0.20
Vì vậy, tên bảng của tôi là truy cập, tên cột của tôi là cong.
alter table visit modify curdate date not null default [current_date];
Điều này viết giá trị ngày mặc định không có dấu thời gian.
Đã trả lời ngày 3 tháng 7 năm 2020 lúc 11:23Jul 3, 2020 at 11:23
2
----- 2016-07-04 MARIADB 10.2.1-Lưu ý phát hành------
Hỗ trợ mặc định với các biểu thức [MDEV-10134].
----- 2018-10-22 8.0.13 Tính khả dụng chung-------
MySQL hiện hỗ trợ việc sử dụng các biểu thức làm giá trị mặc định trong thông số kỹ thuật kiểu dữ liệu. Điều này bao gồm việc sử dụng các biểu thức làm giá trị mặc định cho các loại dữ liệu Blob, Text, hình học và JSON, mà trước đây không thể được gán các giá trị mặc định. Để biết chi tiết, xem Kiểu dữ liệu Giá trị mặc định.
Đã trả lời ngày 21 tháng 11 năm 2018 lúc 19:08Nov 21, 2018 at 19:08
Rick Jamesrick JamesRick James
Huy hiệu vàng 129K1111 gold badges124 silver badges209 bronze badges
Như câu trả lời khác ghi chú chính xác, bạn không thể sử dụng các hàm động làm giá trị mặc định. Bạn có thể sử dụng
CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
1 với thuộc tính CREATE TABLE INVOICE[
INVOICEDATE DATE DEFAULT [CURRENT_DATE]
]
0, nhưng điều này không phải lúc nào cũng có thể, ví dụ nếu bạn muốn giữ cả dấu thời gian sáng tạo và cập nhật và bạn cần cột ____11 duy nhất cho phép lần thứ hai.Trong trường hợp này, sử dụng một kích hoạt thay thế.
Đã trả lời ngày 9 tháng 12 năm 2013 lúc 0:22Dec 9, 2013 at 0:22
Niels Keurentjesniels KeurentjesNiels Keurentjes
40,5K8 Huy hiệu vàng96 Huy hiệu bạc134 Huy hiệu đồng8 gold badges96 silver badges134 bronze badges
4
Tôi đã đến trang này với cùng một câu hỏi, nhưng nó đã làm việc cho tôi !, Chỉ nghĩ để cập nhật ở đây, có thể hữu ích cho một người sau này !!
MariaDB [niffdb]> desc invoice;
+---------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------+------+-----+---------+----------------+
| inv_id | int[4] | NO | PRI | NULL | auto_increment |
| cust_id | int[4] | NO | MUL | NULL | |
| inv_dt | date | NO | | NULL | |
| smen_id | int[4] | NO | MUL | NULL | |
+---------+--------+------+-----+---------+----------------+
4 rows in set [0.003 sec]
MariaDB [niffdb]> ALTER TABLE invoice MODIFY inv_dt DATE NOT NULL DEFAULT [CURRENT_DATE];
Query OK, 0 rows affected [0.003 sec]
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [niffdb]> desc invoice;
+---------+--------+------+-----+-----------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------+------+-----+-----------+----------------+
| inv_id | int[4] | NO | PRI | NULL | auto_increment |
| cust_id | int[4] | NO | MUL | NULL | |
| inv_dt | date | NO | | curdate[] | |
| smen_id | int[4] | NO | MUL | NULL | |
+---------+--------+------+-----+-----------+----------------+
4 rows in set [0.002 sec]
MariaDB [niffdb]> SELECT VERSION[];
+---------------------------+
| VERSION[] |
+---------------------------+
| 10.3.18-MariaDB-0+deb10u1 |
+---------------------------+
1 row in set [0.010 sec]
MariaDB [niffdb]>
Đã trả lời ngày 4 tháng 3 năm 2020 lúc 13:53Mar 4, 2020 at 13:53
ArunarunArun
1.4413 Huy hiệu vàng17 Huy hiệu bạc 30 Huy hiệu Đồng3 gold badges17 silver badges30 bronze badges
1
Trong khi tạo bảng, bạn phải sử dụng hàm
USE `ddb`;
DELIMITER $$
CREATE TRIGGER `default_date` BEFORE INSERT ON `dtable` FOR EACH ROW
if [ isnull[new.query_date] ] then
set new.query_date=curdate[];
end if;
$$
delimiter ;
3 làm giá trị mặc định. Vui lòng xem ví dụ dưới đây tôi vừa thử nghiệm.CREATE TABLE SALES_DATA [
SALES_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
SALES_GIRL_ID INT UNSIGNED NOT NULL,
SALES_DATE DATE NOT NULL DEFAULT [CURRENT_DATE[]],
TOTAL_SALES FLOAT[6, 2],
PRIMARY KEY [SALES_ID],
FOREIGN KEY [SALES_GIRL_ID] REFERENCES SALES_GIRLS[ID]
];
Đã trả lời ngày 24 tháng 4 lúc 18:11Apr 24 at 18:11