【发布时间】:2012-06-22 19:56:50
【问题描述】:
鉴于此:
delimiter //
create procedure setup()
begin
declare d datetime;
set d = rounddate(now());
create table s_time (req_id int not null,
ser_id int not null,
hel_id int not null,
posted int unsigned not null,
completed int unsigned not null default 0
)
partition by range (completed) (partition p0 values less than ( unix_timestamp(d) ),
partition p1 values less than ( unix_timestamp(d + interval 1 day) )
);
end//
我明白了:
ERROR 1064 (42000) : Constant, random, or timezone-dependent expression in (sub)partitioning function are not allowed
有没有办法让它工作,或者我必须使用硬编码字符串作为输入。即使用:unix_timestamp('2012-07-07 00:00:00')
【问题讨论】:
-
您的
s_time表应该在您的程序结束后继续存在吗?另外,您是否希望自动重组分区?换句话说:现在,p0分区包含到目前为止的所有记录。从现在起的 24 小时内,p0是否会包含截至“从现在起 24 小时内”的所有记录? -
这个过程只是为了自动设置表格。该表将用作滚动分区。 24 小时后,第一个分区将被删除并添加另一个分区。我想知道是否有办法不对前两个分区进行硬编码。我想我可以创建另一个程序来执行前两个初始滚动,并在创建具有硬编码值的表之后调用它。
标签: mysql database-partitioning