From ef7a365287c85dee86b143f93f3dbc19d8066ba8 Mon Sep 17 00:00:00 2001 From: ridethepig Date: Sat, 12 Nov 2022 01:25:38 +0800 Subject: [PATCH] update check --- sql/db_create_sqlite.sql | 6 ++++-- sql/trigger_sqlite.sql | 2 +- 表设计.xlsx | Bin 50562 -> 50652 bytes 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/sql/db_create_sqlite.sql b/sql/db_create_sqlite.sql index d163c5b..1b4973c 100644 --- a/sql/db_create_sqlite.sql +++ b/sql/db_create_sqlite.sql @@ -143,10 +143,12 @@ drop table if exists user_stat; create table user_stat ( user_id int PRIMARY KEY, +user_limit int NOT NULL, user_usedspace int NOT NULL DEFAULT 0, user_bookcount int NOT NULL DEFAULT 0, user_doccount int NOT NULL DEFAULT 0, user_notecount int NOT NULL DEFAULT 0, -CONSTRAINT `fk_user_stat_user` FOREIGN KEY (`user_id`) REFERENCES user(`user_id`) ON DELETE RESTRICT +CONSTRAINT `fk_user_stat_user` FOREIGN KEY (`user_id`) REFERENCES user(`user_id`) ON DELETE RESTRICT, +CONSTRAINT `ck_usedspace` CHECK (user_usedspace <= user_limit) ); --- insert into user_stat values (1,1,1,1,1); \ No newline at end of file +-- insert into user_stat values (1,1,1,1,1,1); \ No newline at end of file diff --git a/sql/trigger_sqlite.sql b/sql/trigger_sqlite.sql index 98fa53c..70e1ecc 100644 --- a/sql/trigger_sqlite.sql +++ b/sql/trigger_sqlite.sql @@ -2,7 +2,7 @@ drop trigger if exists `trig_create_user_stat`; create trigger `trig_create_user_stat` after insert on user for each row begin - insert into user_stat (`user_id`) values(NEW.user_id); + insert into user_stat (`user_id`, `user_limit`) values(NEW.user_id, NEW.user_limit); end; drop trigger if exists `trig_delete_user_stat`; diff --git a/表设计.xlsx b/表设计.xlsx index 24740fc3d95d670e581f8efe5bfb584a9241fcc7..1bfad035f4c9556b0e735f285f2d5ef6dc814fc8 100644 GIT binary patch delta 6015 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