当表datetime现在通过时触发脚本()

rbl8hiat  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(250)

我从数据库中删除,并试图回到它有点。我记得很久以前创建了一个类似ebay的应用程序,你可以创建一个带有结束日期的拍卖,当日期过去时,拍卖就结束了。如果我记得有两个属性。
我想创造一些类似的东西。用户将定义一个datetime,当该日期出现时,它将触发一个python脚本。我不认为它一定会触发脚本,但是一个合适的替代方法是:如果datetime<=now(),则插入到出站的\u请求中;
我试着记住关键词。
理想情况下,我想让数据库处理所有的提升,然后由于now()超过了表的datetime列,它将在删除自身之前执行python脚本。
或者,我可以将条目移动到另一个表中进行处理。
我不认为这是一个触发器,因为这似乎意味着一个条目被插入到数据库中。我想的只是某种被动函数,它检查表约束。
我所有的代码都是用python编写的,但对免费dbms开放,但倾向于mysql或sqlalchemy
我知道对于我的简单概念证明,我会有一个类似于:

USER_ID varchar(60)
URL varchar(250)
COMMENT varchar(1000)
SUBMISSION_DATE datetime
PROCESS_DATE datetime
am46iovg

am46iovg1#

经过一些讨论后,有人指出,为使其快速,应使用处理日期的索引。这样表可以快速迭代。其次,我发现创建一个视图来获取利用索引处理所需的信息是明智的。

create table if not exists T(
  USER_ID nvarchar(60),
  URL nvarchar(250),
  CONTENT nvarchar(700),
  SUBMISSION_DATE datetime,
  PROCESS_DATE datetime,
  index PROCESS_DATE_IDX using BTREE (PROCESS_DATE)
);

create or replace view T_Vw as SELECT * FROM T where PROCESS_DATE < now();

根据已查看列的使用情况,将旧条目转储到存储表中可能是明智的。

create table if not exists T_BK(
  USER_ID nvarchar(60),
  URL nvarchar(250),
  CONTENT nvarchar(700),
  SUBMISSION_DATE datetime,
  PROCESS_DATE datetime,
  index PROCESS_DATE_IDX using BTREE (PROCESS_DATE)
);

DELIMITER $$
CREATE TRIGGER T_tgr BEFORE DELETE ON Tweet FOR EACH ROW
BEGIN
   insert into T_BK ('USER_ID', 'URL', 'CONTENT', 'SUBMISSION_DATE', 'PROCESS_DATE') values (OLD.USER_ID, OLD.URL, OLD.CONTENT, OLD.SUBMISSION_DATE, OLD.PROCESS_DATE);
END; $$
DELIMITER ;

相关问题