我可以编写一个从多个表中删除的过程吗?

时间:2009-01-26 18:19:27

标签: database stored-procedures

我找到的所有程序帮助仅用于选择目的。

我可以编写一个表来截断几个表吗?

类似于(但这不起作用)

CREATE PROCEDURE clearall()
  BEGIN
    truncate tallgrrl.auth;
    truncate tallgrrl.factory;
    truncate tallgrrl.farm;
    truncate tallgrrl.player;
    truncate tallgrrl.timer;
  END;

7 个答案:

答案 0 :(得分:5)

如果您与该表有关系,

truncate可能不起作用,在这种情况下您需要

使用删除

删除关系截断表并再次重新创建关系

答案 1 :(得分:4)

绝对。存储过程的目的之一是封装逻辑/多个操作。

答案 2 :(得分:2)

我不知道为什么你的TRUNCATE不起作用。我已经存储了TRUNCATE表的过程。您使用的是什么数据库平台?

您的TRUNCATE是否在SP之外工作?正如SQLMenace所提到的,你不能对具有FK依赖性的表使用TRUNCATE。

答案 3 :(得分:1)

尝试切换到“从[表名]中删除”,因为由于权利问题,截断可能不起作用。

答案 4 :(得分:1)

你应该能够。也许你正在以错误的顺序进行截断(并且违反完整性约束。例如,在没有孩子悬挂它之前你不能删除父。

答案 5 :(得分:1)

您可能需要更改截断的顺序,以便在引用它们的数据之前不截断外键。

答案 6 :(得分:0)

你得到了什么错误?

除了上述FK潜在问题之外,根据执行proc的用户的权限,您可能没有截断权限。