Postgresql
數據模型限制每個使用者的行數
這是關於我被要求創建與使用者有關係的數據模型的 postgres。
例如一個名為 Comment M:1 User 的新數據模型,但在創建數據模型時是否可以設置只能創建 100 條推薦記錄的限制?甚至可能沒有將它們與 PK 連結可能只是一個帶有
user_id
.通常如果需要這樣做,我會在 RESTful api 請求中檢查使用者是否已經創建了 100 條評論,但我告訴在數據模型方面進行。我嘗試使用Google搜尋,但可能沒有使用正確的關鍵字,所以在這裡有點迷失,我想確保僅在一個表創建中就可以做到這一點(評論)
提前感謝您的任何建議/意見。
使用TRIGGER是一個很好的方法。此外,值得考慮使用ARRAY來管理您的評論。例如:
DROP TABLE IF EXISTS tb_customers, tb_comments; CREATE TABLE tb_customers ( customer_id uuid primary key, username text ); CREATE TABLE tb_comments ( customer_id uuid primary key, comment text[] ); ALTER TABLE tb_comments ADD CONSTRAINT tb_comments_constr01 CHECK ( array_length(comment, 1) <= 10); -- LIMIT 10 comment INSERT INTO tb_customers VALUES ('53003bcb-3d1e-4955-96c0-272719e9762d', 'username_01'), ('07c01749-5ec2-4d38-9b74-15168fe185f5', 'username_02'), ('ab68a33d-ddb0-4bc5-af75-a7d17cb9c157', 'username_03'); INSERT INTO tb_comments (customer_id, comment) values ('07c01749-5ec2-4d38-9b74-15168fe185f5', array['$1']) ON CONFLICT (customer_id) DO UPDATE SET comment = array_append(tb_comments.comment, '$1'); INSERT INTO tb_comments (customer_id, comment) values ('ab68a33d-ddb0-4bc5-af75-a7d17cb9c157', array['$2']) ON CONFLICT (customer_id) DO UPDATE SET comment = array_append(tb_comments.comment, '$2'); INSERT INTO tb_comments (customer_id, comment) values ('53003bcb-3d1e-4955-96c0-272719e9762d', array['$3']) ON CONFLICT (customer_id) DO UPDATE SET comment = array_append(tb_comments.comment, '$3');