私はユーザーが最後に見た20の製品を保存したいと思います。ユーザーが製品番号21を参照すると、最も古いレコードがORACLEデータベースから削除されます。oracleデータベースのIDごとの行数を制限するにはどうすればよいですか。
テーブルには、システム内のすべてのユーザーの最近表示された製品が含まれています。
基本的に私は、ユーザーXがYレコードをテーブルに持っているかどうかをチェックする必要があります。もしそうなら、最も古いレコードを削除して、ユーザーXが最近見た製品テーブルにYレコードしかないようにします。
ご協力いただければ幸いです。
これは正しく動作しない試行です。
DELETE FROM VIEWED_PRODUCT
WHERE id NOT IN (
SELECT id
FROM (
SELECT * FROM (
SELECT id
FROM VIEWED_PRODUCT
WHERE MY_ID = 1626
ORDER BY CREATED_AT DESC)
WHERE ROWNUM <= 20
) z
);
ありがとうございます。
これは、データベース内で動的に行うためにひどいアイデアのように思えます。ユーザーが 'X'ページをブラウズしたり、他のトリガーアクションをクローズ/セーブ/実行すると、アプリケーションにこれを保存してDBを更新することができない理由はありますか? – JNK
+1あなたの質問ではなく、あなたのMEGA MANアバターのためです。 – JonH
@JNK:多分Webアプリケーションですか?すなわち、ユーザがトリガ動作を実行することを保証することはできない。 –