я могу написать процедуру для удаления из нескольких таблиц? - PullRequest
1 голос
/ 26 января 2009

вся справка по процедуре, которую я найду, используется только в отдельных целях.

можно ли написать таблицу для усечения нескольких таблиц?

похоже на (но это НЕ работает)

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

Ответы [ 7 ]

5 голосов
/ 26 января 2009

усечение может не работать, если у вас есть отношения с этой таблицей, в этом случае вам нужно либо

используйте удалить

удалить связь, обрезать таблицу и заново создать связь

4 голосов
/ 26 января 2009

Абсолютно. Одной из целей хранимых процедур является инкапсуляция логических / множественных операций.

2 голосов
/ 26 января 2009

Я не знаю, почему ваш TRUNCATE не работает. Я хранил процы, которые TRUNCATE таблицы. Какую платформу БД вы используете?

Работает ли TRUNCATE вне SP? Как упоминается в SQLMenace, нельзя использовать TRUNCATE для таблиц с зависимостями FK.

1 голос
/ 27 января 2009

Вам может потребоваться изменить порядок усечения, чтобы внешние ключи не усекались перед данными, которые на них ссылаются.

1 голос
/ 26 января 2009

Вы должны быть в состоянии. Возможно, вы делаете свои усечения в неправильном порядке (и нарушаете ограничения целостности. Например, вы не можете удалить родителя, пока с него не свисают дети.

1 голос
/ 26 января 2009

Попробуйте переключиться на «удалить из [имя таблицы]», поскольку усечение может не работать из-за проблем с правами.

0 голосов
/ 26 января 2009

Какие ошибки вы получаете?

Помимо вышеупомянутой потенциальной проблемы FK, в зависимости от прав пользователя, выполняющего процедуру, у вас могут не быть разрешения на усечение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...