小编Jul*_*ull的帖子

如果不存在触发器

我有两个表concept_access和concept_access_log.我想创建一个触发器,每次从concept_access中删除某些东西时都会工作,检查日志表中是否有类似的记录,如果没有,则在从concept_access中删除之前插入新的.

我修改了触发器,现在它看起来像这样:

DROP TRIGGER IF EXISTS before_delete_concept_access;
DELIMITER //
CREATE TRIGGER before_delete_concept_access
    BEFORE DELETE ON `concept_access` FOR EACH ROW
    BEGIN
        IF (SELECT 1 FROM concept_access_log WHERE map=OLD.map 
                          AND accesstype=OLD.accesstype AND startdate=OLD.startdate AND stopdate=OLD.stopdate) IS NULL THEN
            INSERT INTO concept_access_log (map, accesstype, startdate, stopdate)
            VALUES (OLD.map, OLD.accesstype, OLD.startdate, OLD.stopdate);
        END IF;
    END//
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

删除前concept_access中的示例数据:

map accesstype  startdate   stopdate
1   public      NULL        NULL    
1   loggedin    2011-05-11  NULL    
1   friends     NULL        NULL    
Run Code Online (Sandbox Code Playgroud)

日志表已经有前2行.它们与concept_access完全相同.当我从concept_access表中删除第一行时,我在日志表中得到这个:

map accesstype  startdate   stopdate
1   public      NULL        NULL    
1 …
Run Code Online (Sandbox Code Playgroud)

mysql sql triggers

9
推荐指数
1
解决办法
2万
查看次数

包括范围上限()

如何在range()函数中包含上限?我不能加1,因为我的for循环看起来像:

for x in range(1,math.floor(math.sqrt(x))):
    y = math.sqrt(n - x * x)
Run Code Online (Sandbox Code Playgroud)

但据我所知,它实际上是1 < x < M我需要的地方1 < x <= M添加1将完全改变结果.我试图将我的旧程序从C#重写为Python.这就是它在C#中的表现:

for (int x = 1; x <= Math.Floor(Math.Sqrt(n)); x++)
    double y = Math.Sqrt(n - x * x);
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
1
解决办法
7217
查看次数

标签 统计

mysql ×1

python ×1

sql ×1

triggers ×1