簡體   English   中英

SQL最大記錄數

[英]SQL max number of records

所以我有下表:

 CREATE TABLE Hospital_MedicalRecord(
        recNo CHAR(5),
        patient CHAR(9),
        doctor CHAR(9),
        enteredOn DATE NOT NULL,
        diagnosis VARCHAR(50) NOT NULL,
        treatment VARCHAR(50),
        PRIMARY KEY (recNo, patient),
        FOREIGN KEY (patient) REFERENCES Hospital_Patient(NINumber),
        FOREIGN KEY (doctor) REFERENCES Hospital_Doctor(NINumber)
    );

我想做到這一點,因此單個患者的醫療記錄永遠不會超過 65,535 份。 我應該發表新聲明還是應該在上表中實施它。 如果需要,我可以張貼患者表。

您通常會為此使用before insert觸發器,如果​​患者的記錄數達到限制並嘗試新的插入,則會引發錯誤:

delimiter //

create trigger Trg_Hospital_MedicalRecord
before insert on Hospital_MedicalRecord
for each row
begin
    if (
        select count(*) from Hospital_MedicalRecord where patient = new.patient
    ) = 65535 then
            set msg = concat('Patient ', new.patient, ' cannot have more than 65535 records');
            signal state '45000' set message_text = msg;
    end if;
end
//

delimiter ;

我認為您不應該允許在現有記錄上更新patient 但是,如果這可能發生,那么您還需要一個before update觸發器(使用完全相同的代碼)。

考慮以下...

 DROP TABLE IF EXISTS my_table;

 CREATE TABLE my_table(id SERIAL PRIMARY KEY, user_id INT NOT NULL);

 INSERT INTO my_table (user_id)
SELECT 1
  FROM (SELECT 1) x
  LEFT
  JOIN (SELECT user_id FROM my_table GROUP BY user_id HAVING COUNT(*) >=3) y
    ON y.user_id = 1
 WHERE y.user_id IS NULL
 LIMIT 1;

這將每個 user_id 的 INSERTS 限制為 3。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM