私は2つの属性を持つテーブルを持っています:ID &そのレコードが作成された日時。たとえば、1日後にレコードを削除するためのトリガー(手順)を行うにはどうすればよいですか?SQL Server:一定時間後にレコードを自動的に削除しますか?
編集:タイトルに「自動」を追加しました。これは、手動で行うのではなく、毎回X時間ごとに実行するタスクが必要であることを意味します。 1日よりも古いレコードを削除する
私は2つの属性を持つテーブルを持っています:ID &そのレコードが作成された日時。たとえば、1日後にレコードを削除するためのトリガー(手順)を行うにはどうすればよいですか?SQL Server:一定時間後にレコードを自動的に削除しますか?
編集:タイトルに「自動」を追加しました。これは、手動で行うのではなく、毎回X時間ごとに実行するタスクが必要であることを意味します。 1日よりも古いレコードを削除する
文は次のとおりです。
DELETE FROM tableName WHERE DATEDIFF(day, getdate(), dateColumn) < -1
あなたは、あなたが利用可能なあらゆる言語インスタンスのためのPHPを使用してその文をcronに必要があるでしょう。あなたは毎日あなたが望むように、1日(または後に実行するSQLジョブを作成することができ
ありがとう! -1部分について簡単に説明できますか?また、毎日自動的に実行することもできますか?私はSQL Jobと呼ばれるものを聞いたが、わからない。 – concretejungle
シナリオについては、電子メールで送信されたパスワードリンクを忘れてしまいました。一定期間が経過するとリンクは期限切れになります。 – concretejungle
マイナス1は「1日前」(昨日)に相当します:) – mayersdesign
);もちろん、それはあなたが最初の場所でレコードを削除することがしたいシナリオを想像するのは難しいと述べ
。 )を実行し、単純なdeleteステートメントを実行する指定されたストアドプロシージャを実行します。
は、次のトピックをフォロー: -私は、あなたは、SQL Serverエージェントを使用すると、日付が1日に渡されるすべての行を削除するストアドプロシージャを記述することをお勧めします。
あなたがここにSQL Serverのエージェントジョブを使用する方法を見つけることができます。ここで、文の 数1:
CREATE PROCEDURE DeleteRows()
AS
BEGIN
DELETE FROM mytable
WHERE (DATEDIFF(DAY, DATEADD(day, -1, DateColum), GETDATE())) >= 1
END
編集:のような
https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job
とストアドプロシージャを日です。あなたはそれをあなたが使いたいものに変更することができます。
非常にクールなもの – mayersdesign
これは私が必要なものです、ありがとう! – concretejungle
ようこそ。私はあなたが望む最良の方法でこれを使うことができるので、SQLの仕事についてもっと読むことをお勧めします。 –
トリガーはイベントのようなもので、アクションが発生したときに起動します(挿入、更新、削除など)。あなたが話しているのは、スケジュールタスクです。多くの場合、SQL Serverでは、必要な行を削除するプロシージャを作成します。そして、そのプロシージャを実行するために、指定されたスケジュールで実行するSQLジョブを作成します。 –