2017-04-07 21 views
2

私は2つの属性を持つテーブルを持っています:ID &そのレコードが作成された日時。たとえば、1日後にレコードを削除するためのトリガー(手順)を行うにはどうすればよいですか?SQL Server:一定時間後にレコードを自動的に削除しますか?

編集:タイトルに「自動」を追加しました。これは、手動で行うのではなく、毎回X時間ごとに実行するタスクが必要であることを意味します。 1日よりも古いレコードを削除する

+0

トリガーはイベントのようなもので、アクションが発生したときに起動します(挿入、更新、削除など)。あなたが話しているのは、スケジュールタスクです。多くの場合、SQL Serverでは、必要な行を削除するプロシージャを作成します。そして、そのプロシージャを実行するために、指定されたスケジュールで実行するSQLジョブを作成します。 –

答えて

0

文は次のとおりです。

DELETE FROM tableName WHERE DATEDIFF(day, getdate(), dateColumn) < -1 

あなたは、あなたが利用可能なあらゆる言語インスタンスのためのPHPを使用してその文をcronに必要があるでしょう。あなたは毎日あなたが望むように、1日(または後に実行するSQLジョブを作成することができ

+0

ありがとう! -1部分について簡単に説明できますか?また、毎日自動的に実行することもできますか?私はSQL Jobと呼ばれるものを聞いたが、わからない。 – concretejungle

+0

シナリオについては、電子メールで送信されたパスワードリンクを忘れてしまいました。一定期間が経過するとリンクは期限切れになります。 – concretejungle

+0

マイナス1は「1日前」(昨日)に相当します:) – mayersdesign

0

);もちろん、それはあなたが最初の場所でレコードを削除することがしたいシナリオを想像するのは難しいと述べ

。 )を実行し、単純なdeleteステートメントを実行する指定されたストアドプロシージャを実行します。

は、次のトピックをフォロー: -

http://technet.microsoft.com/en-us/library/ms190268.aspx

2

私は、あなたは、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

とストアドプロシージャを日です。あなたはそれをあなたが使いたいものに変更することができます。

+0

非常にクールなもの – mayersdesign

+0

これは私が必要なものです、ありがとう! – concretejungle

+0

ようこそ。私はあなたが望む最良の方法でこれを使うことができるので、SQLの仕事についてもっと読むことをお勧めします。 –

関連する問題