Supabase的觸發器功能介紹 | Trigger in Supabase

更新於 發佈於 閱讀時間約 6 分鐘
Supabase的觸發器功能介紹 | Trigger in Supabase封面圖片

Supabase的觸發器功能介紹 | Trigger in Supabase封面圖片

本篇文章主要介紹Supabase裡的Trigger的功能,詳細說明什麼是Trigger和使用時機,以及如何在後台瀏覽和設定Trigger,此外,文章中會提供一個常用的Trigger功能範例。

嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supabase的進階功能應用。

什麼是觸發器(Trigger)?

觸發器(Trigger)是一個在資料庫中自動執行任務的功能,而這個觸發器可以劃分成兩個部分,第一個是觸發的條件,第二個則是執行的內容。

觸發條件

觸發條件就是在資料庫的表格發生新增更新刪除資料等時間點,可以設定是要在執行表格任務的前或後執行函式或任務。

執行的內容

當指定的觸發條件發生時,就會執行設定好的函式或任務,並將此次執行所需的資料傳遞至該函式。通常,這可以用於驗證資料格式、進行邏輯處理、記錄等功能。當然,也可用於執行大量重複的資料表格操作。

後台觸發器(Trigger)的位置

由後台面板新增

supabase中,直接進入後台介面後選擇Database頁籤,選擇Triggers,就可以看到目前這個資料庫裡面的所有觸發器。

Trigger的頁籤

Trigger的頁籤

首次進入頁面可以看到很多預設的觸發器,點擊右上角的Create a new trigger可以開啟新增觸發器的介面。

新增觸發器面板

新增觸發器面板

supabase非常友善於不太會撰寫SQL的人提供這個面板,可以根據想要的觸發器功能依照欄位填寫,最下方再把基本的SQL填入新增即可。

由SQL Editor新增

對於PostgreSQL相當熟悉的人依舊可以選擇由SQL Editor直接撰寫想要的觸發器功能,甚至可以連同需要執行的函式功能一起新增綁定。

當然在現今版本中有Supabase AI的協助之下也能夠產生出觸發器基本的語法,再根據內容做微調或是修改就可以。

新增首個觸發器

設定觸發器的目標

延續前面文章的內容,我希望在我的待辦清單表格中新增一個名為updated_at的欄位。每當我更新按讚數字時,這個欄位的值都會被更新為當前的時間。

updated_at是很多表格都會具備的欄位。

設定這個觸發器的目的是為了減輕前端執行重複的工作負擔。否則,如果在前端更新資料後再重新更新欄位時間,這個過程將變得更加複雜。

新增觸發器的函式

去前面幾篇提到的新增函式的頁面,直接新增一個全新的函式。

新增函式

新增函式

名字叫做update_timeReture type的欄位要設定成trigger才能在等一下觸發器的頁面選擇這個函式,下方Definition的內容如下。

BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;

大致上內容和上一篇文章提到的內容差不多,只是這次是在UI介面中設定,不用撰寫sql。

Supabase的函式功能介紹與實作 | Functions with Supabase

而這段sql中有用到環境變數NEW,實際上還有很多個環境變數可以使用,詳細的內容可以參考官方文件。

官方文件

成功新增完成,在Functions的列表就可以看到剛剛的那個函式,Return type是寫trigger

觸發器的函式新增完成

觸發器的函式新增完成

到這裡已經完成新增函式的動作,接下來要去新增觸發器。

套用觸發器

把頁籤切回觸發器的地方,點擊右上角新增觸發器。

新增觸發器(Trigger)面板

新增觸發器(Trigger)面板

命名的部分就取個名字,我這裡是取叫做handle_updated_at,細項如下:

  • Table:選擇表格todos
  • Events:這裡可以選擇觸發的事件名稱,因為是更新時間所以把Update勾選。
  • Trigger type: 選擇Before the event在更新前就把時間更新完成。
  • Orientation:這個問題是,如果多筆資料同時滿足條件,是希望每筆資料都觸發一次事件,還是只在整筆資料觸發一次,這裡的情境下,希望每一筆資料在更新時都能夠被更新,因此選擇Row

把選項都填入以後按下新增,第一個觸發器就完成囉!接著進入測試的時間。

前端實測

新增完成觸發器的設定,接著就可以回到前端實測到底更新資料的時候會不會把updated_at的欄位一起更新至最新時間。

修改成讓畫面顯示最後更新時間

修改成讓畫面顯示最後更新時間

我把我的測試頁面挖一個表格空間給updated_at欄位顯示,所以現在只要對我的資料點讚發生更新,最後更新時間也會一起被更新到目前時間。

更新按讚數後時間也隨著更新

更新按讚數後時間也隨著更新

可以看到,當按讚ID 8的資料時,該筆資料的likes更新操作觸發了之前設定的函式,因此連帶著updated_at也同時被更新到最新的時間,這個觸發器設定成功生效。

直接使用插件更新時間

最後更新時間在實務上很常被使用,所以PostgreSQL有提供一個插件可以使用,直接提供整段sql一鍵開啟並且套用在表格上。

create extension if not exists moddatetime schema extensions;

create trigger
handle_updated_at before update
on <表格名稱>
for each row execute
procedure moddatetime(updated_at);

這段就是直接開啟這個插件,並且新增一個觸發器套用在表格上,當然先決條件是這個表格要有updated_at的欄位。

結語

善用觸發器(Trigger)的話,能夠幫助開發者減少重複執行的工作,提高資料庫效能和安全性,可以說是一個強大而且實用的功能。

有興趣的內容

留言
avatar-img
留言分享你的想法!
avatar-img
技術叢林
6會員
23內容數
沙龍新手
技術叢林的其他內容
2023/10/05
前面文章有說明過訂閱資料庫的更新事件,讓前端畫面能夠收到更新資訊即時反應在用戶面前,那接下來要介紹Supabase的Webhooks則是能讓其他server端收到資料庫事件的通知。 這裡簡單說明一下Webhooks,一般來說是由前端主動呼叫後端API,取回資料,Webhooks則是由後端伺服器觸發某
Thumbnail
2023/10/05
前面文章有說明過訂閱資料庫的更新事件,讓前端畫面能夠收到更新資訊即時反應在用戶面前,那接下來要介紹Supabase的Webhooks則是能讓其他server端收到資料庫事件的通知。 這裡簡單說明一下Webhooks,一般來說是由前端主動呼叫後端API,取回資料,Webhooks則是由後端伺服器觸發某
Thumbnail
2023/09/28
本篇文章又要介紹Supabase好用的實時更新功能,叫做Presence。Presence是 Supabase 提供的一項實時更新功能,讓開發者能夠輕鬆實現用戶之間的實 嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supa
Thumbnail
2023/09/28
本篇文章又要介紹Supabase好用的實時更新功能,叫做Presence。Presence是 Supabase 提供的一項實時更新功能,讓開發者能夠輕鬆實現用戶之間的實 嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supa
Thumbnail
2023/09/15
Supabase是使用PostgreSQL作為資料庫,所以當然也具有Storage的功能,能夠儲存用戶的圖片或是檔案,一樣可以設定讀取權限相當方便,一起瞭解如何操作。 從後台的大頁籤就可以進去Storage頁面,頁面和資料庫表格有點類似,如果有新增任何buckets就會顯示在All buckets的
Thumbnail
2023/09/15
Supabase是使用PostgreSQL作為資料庫,所以當然也具有Storage的功能,能夠儲存用戶的圖片或是檔案,一樣可以設定讀取權限相當方便,一起瞭解如何操作。 從後台的大頁籤就可以進去Storage頁面,頁面和資料庫表格有點類似,如果有新增任何buckets就會顯示在All buckets的
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
前面文章有說明過訂閱資料庫的更新事件,讓前端畫面能夠收到更新資訊即時反應在用戶面前,那接下來要介紹Supabase的Webhooks則是能讓其他server端收到資料庫事件的通知。 這裡簡單說明一下Webhooks,一般來說是由前端主動呼叫後端API,取回資料,Webhooks則是由後端伺服器觸發某
Thumbnail
前面文章有說明過訂閱資料庫的更新事件,讓前端畫面能夠收到更新資訊即時反應在用戶面前,那接下來要介紹Supabase的Webhooks則是能讓其他server端收到資料庫事件的通知。 這裡簡單說明一下Webhooks,一般來說是由前端主動呼叫後端API,取回資料,Webhooks則是由後端伺服器觸發某
Thumbnail
Supabase是使用PostgreSQL作為資料庫,所以當然也具有Storage的功能,能夠儲存用戶的圖片或是檔案,一樣可以設定讀取權限相當方便,一起瞭解如何操作。 從後台的大頁籤就可以進去Storage頁面,頁面和資料庫表格有點類似,如果有新增任何buckets就會顯示在All buckets的
Thumbnail
Supabase是使用PostgreSQL作為資料庫,所以當然也具有Storage的功能,能夠儲存用戶的圖片或是檔案,一樣可以設定讀取權限相當方便,一起瞭解如何操作。 從後台的大頁籤就可以進去Storage頁面,頁面和資料庫表格有點類似,如果有新增任何buckets就會顯示在All buckets的
Thumbnail
本篇文章主要介紹Supabase裡的Trigger的功能,詳細說明什麼是Trigger和使用時機,以及如何在後台瀏覽和設定Trigger,此外,文章中會提供一個常用的Trigger功能範例。 善用觸發器(Trigger)的話,能夠幫助開發者減少重複執行的工作,提高資料庫效能和安全性,可以說是一個強大
Thumbnail
本篇文章主要介紹Supabase裡的Trigger的功能,詳細說明什麼是Trigger和使用時機,以及如何在後台瀏覽和設定Trigger,此外,文章中會提供一個常用的Trigger功能範例。 善用觸發器(Trigger)的話,能夠幫助開發者減少重複執行的工作,提高資料庫效能和安全性,可以說是一個強大
Thumbnail
這篇要介紹的是Supabase裡的Functions,我不知道有沒有官方的中文譯名,我都直接稱呼為函式或程式。Functions就是和任何程式語言裡面所認識的函式一樣,只差在這個Functions是在PostgreSQL裡面執行,沒有聽錯是在資料庫裡面執行的函式,文章會介紹新增的方式和做一個範例。
Thumbnail
這篇要介紹的是Supabase裡的Functions,我不知道有沒有官方的中文譯名,我都直接稱呼為函式或程式。Functions就是和任何程式語言裡面所認識的函式一樣,只差在這個Functions是在PostgreSQL裡面執行,沒有聽錯是在資料庫裡面執行的函式,文章會介紹新增的方式和做一個範例。
Thumbnail
在supabase裡可以直接從客戶端讀取資料庫中的資料,在設定好RLS的前提之下,更可以對資料庫直接進行新增、修改、刪除等操作。 先進到後台選擇SQL Editor,可以來到SQL編輯器的頁面,如果是本身會寫資料庫相關的SQL內容可以直接點擊上方的New query按鈕,可以開啟一個空白頁面開始編輯
Thumbnail
在supabase裡可以直接從客戶端讀取資料庫中的資料,在設定好RLS的前提之下,更可以對資料庫直接進行新增、修改、刪除等操作。 先進到後台選擇SQL Editor,可以來到SQL編輯器的頁面,如果是本身會寫資料庫相關的SQL內容可以直接點擊上方的New query按鈕,可以開啟一個空白頁面開始編輯
Thumbnail
在上篇文章中Supabase的JavaScript Client Library串接實作我們實際安裝並且使用了supabase-js連接我們的supabase資料庫,並且已經測試成功。本篇文章就來導覽一下supabase-js的文件,還有在頁面裡面示範會員管理系統的登入和登出,以及在客戶端的操作。嗨
Thumbnail
在上篇文章中Supabase的JavaScript Client Library串接實作我們實際安裝並且使用了supabase-js連接我們的supabase資料庫,並且已經測試成功。本篇文章就來導覽一下supabase-js的文件,還有在頁面裡面示範會員管理系統的登入和登出,以及在客戶端的操作。嗨
Thumbnail
Supabase的串接方式很多元,其中在網頁前端中使用起來最簡單也最推薦的方式就是使用官方提供的supabase-js套件,該套件已經把所有REST和REALTIME的API功能包好,可以方便的在網頁中提取使用。嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什
Thumbnail
Supabase的串接方式很多元,其中在網頁前端中使用起來最簡單也最推薦的方式就是使用官方提供的supabase-js套件,該套件已經把所有REST和REALTIME的API功能包好,可以方便的在網頁中提取使用。嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什
Thumbnail
Supabase裡的每個專案都自帶一組開箱即用的會員系統和身份認證系統,只需要使用Supabase提供的SDK,不管是身份認證、登入、登出、會員管理,處理TOKEN等功能都包在裡面處理到好,相當實用。 嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功
Thumbnail
Supabase裡的每個專案都自帶一組開箱即用的會員系統和身份認證系統,只需要使用Supabase提供的SDK,不管是身份認證、登入、登出、會員管理,處理TOKEN等功能都包在裡面處理到好,相當實用。 嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News