/    Sign up×
Community /Pin to ProfileBookmark

Help constructing a Mysql trigger

I have the following two tables:

TABLE 1:

“`

+—————————–+————————————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+—————————–+————————————–+——+—–+———+——-+
| patient_id | bigint(20) | NO | PRI | NULL | |
| patient_wpid | int(11) | NO | PRI | NULL | |
| age_at_visit | int(11) | YES | | NULL | |
| sex | enum(‘male’,’female’) | YES | | NULL |

“`

TABLE 2

“`
+————————-+—————————-+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————————-+—————————-+——+—–+———+—————-+
| patient_id | bigint(20) | NO | PRI | NULL | |
| patient_wpid | int(11) | NO | PRI | NULL | |
| weight | text | YES | | NULL | |
| creatinine | text | YES | | NULL | |
| eGFR | varchar(100) | YES | | N/A | |
+————————-+—————————-+——+—–+———+—————-+

“`

What I need to do is, after an insert on Table 2, perform the following:

  • 1.

    Select the `age_at_visit` and `sex` values from Table 1, for the given `patient_id` and `patient_wpid` (these fields have same values on both Table 1 and Table 2 and Table 1 has been filled BEFORE Table 2)

  • 2.

    Use the inserted values of `weight` and `creatinine` in Table2 and calculate a formula, in order to produce, and consecutively store, a value for the `eGFR` column of Table2.
    The formula is the following:
    `
    eGFR = 175 × (creatinine)^(-1.154) × (age)^(-0.203) × (0.742 if female)`

  • So, what I wrote (and produced quite a few errors since it is my very first attempt with Triggers) is the following:

    “`
    delimiter //
    CREATE TRIGGER calcEGFR AFTER INSERT ON Table2
    FOR EACH ROW
    BEGIN
    SELECT age_at_visit, sex FROM Table1 WHERE (Table1.patient_wpid = Table2.patient_wpid AND Table1.patient_id = Table2.patient_id)
    SET @creatinine_power := SELECT POWER(creatinine,-1.154);
    SET @age_power := SELECT POWER(Table1.age_at_visit,-0.203);
    IF Table1.sex = ‘female’ THEN
    SET @sex_addition := 0.742
    END IF;
    IF Table1.sex = ‘male’ THEN
    SET @sex_addition := 1
    END IF;

    SET @eGFR_value := (175 * @creatinine_power * @age_power * @sex_addition)
    UPDATE Table2 SET eGFR = @eGFR_value;
    END;//
    delimiter ;
    “`

    Can you please help me correct this?
    Thanks!

    to post a comment

    0Be the first to comment 😎

    ×

    Success!

    Help @bioplanet spread the word by sharing this article on Twitter...

    Tweet This
    Sign in
    Forgot password?
    Sign in with TwitchSign in with GithubCreate Account
    about: ({
    version: 0.1.9 BETA 4.26,
    whats_new: community page,
    up_next: more Davinci•003 tasks,
    coming_soon: events calendar,
    social: @webDeveloperHQ
    });

    legal: ({
    terms: of use,
    privacy: policy
    });
    changelog: (
    version: 0.1.9,
    notes: added community page

    version: 0.1.8,
    notes: added Davinci•003

    version: 0.1.7,
    notes: upvote answers to bounties

    version: 0.1.6,
    notes: article editor refresh
    )...
    recent_tips: (
    tipper: @Yussuf4331,
    tipped: article
    amount: 1000 SATS,

    tipper: @darkwebsites540,
    tipped: article
    amount: 10 SATS,

    tipper: @Samric24,
    tipped: article
    amount: 1000 SATS,
    )...