我在创建CURRENT_TIMESTAMP
用于指定日期的表时遇到了一些问题。我需要这个,因为我使用 java jpa 实体按日期检索它们。如果我运行到本地 h2 数据库,我没有问题。
在这个例子中:
INSERT INTO Post (id, title, slug, teaser, body, author_id, posted_on)
VALUES (1, 'Spring Boot Rocks!', 'spring-boot-rocks', @TEASER, @BODY, 1, CURRENT_TIMESTAMP);
一切都被创建并完美运行,但是当我在我连接的 Azure SQL 数据库中尝试相同的查询时,我得到了错误
无法执行查询。错误:无法将显式值插入时间戳列。将 INSERT 与列列表一起使用以排除时间戳列,或将 DEFAULT 插入时间戳列。
如果我尝试改变CURRENT_TIMESTAMP
,TIMESTAMP
我会得到;
无法执行查询。错误:列名“TIMESTAMP”无效。如果我将其更改为 DEFAULT,因为先前的错误表明已创建表,但我无法按创建日期检索它们,因为 DEFAULT 不是时间值。
完整查询
SET IDENTITY_INSERT author ON
insert into author(id,first_name,last_name,email) values (1,'Dan','Vega','danvega@gmail.com');
insert into author(id,first_name,last_name,email) values (2,'John','Smith','johnsmith@gmail.com');
SET IDENTITY_INSERT author OFF
SET IDENTITY_INSERT post ON
DECLARE @TEASER varchar(4000) = 'text...'
DECLARE @BODY varchar(4000) = 'text...'
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (1,'Spring Boot Rocks!','spring-boot-rocks',@TEASER,@BODY,1,CURRENT_TIMESTAMP);
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (2,'Spring Data Rocks!','spring-data-rocks',@TEASER,@BODY,1,CURRENT_TIMESTAMP);
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (3,'John Blog Post 1','john-blog-post-1',@TEASER,@BODY,2,CURRENT_TIMESTAMP);
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (4,'John Blog Post 2','john-blog-post-2',@TEASER,@BODY,2,CURRENT_TIMESTAMP);
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (5,'John Blog Post 3','john-blog-post-3',@TEASER,@BODY,2,CURRENT_TIMESTAMP);
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (6,'Refactoring our Spring Data Project','refactoring-spring-data-project',@TEASER,@BODY,1,CURRENT_TIMESTAMP);
SET IDENTITY_INSERT post OFF