簡體   English   中英

SQL自我計算字段

[英]SQL self calculated field

我有兩個表通過m2m關系連接。

CREATE TABLE words 
    (
    id INT PRIMARY KEY, 
    word VARCHAR(100) UNIQUE, 
    counter INT
    )

CREATE TABLE urls 
    (
    id INT PRIMARY KEY, 
    url VARCHAR(100) UNIQUE
    )

CREATE TABLE urls_words 
    (
    url_id INT NOT NULL REFERENCES urls(id), 
    word_id INT NOT NULL REFERENCES words(id)
    )

我在單詞表中有計數器字段。 如何自動更新計數器字段的過程,該計數器字段負責計算urls_words中存儲的特定字的行數。

我會調查你為什么要存儲這個值。 可能有充分的理由,但會觸發數據庫復雜化。

如果這是一個“加載然后查詢”數據庫,那么您可以在加載數據時更新計數 - 可能是某些頻率,例如每天一次或每周一次。 您無需擔心觸發器。

如果這是一個事務性數據庫,則需要觸發器,這會增加處理的復雜性。 當您可能不希望它們被鎖定時,它們也會鎖定表。

另一種方法是在urls_words(word_id, url_id)urls_words(word_id, url_id)索引。 這將大大加快您需要時計算的次數。 在更新期間,它也不需要多個表上的觸發器或鎖。

在urls_words表上創建一個觸發器,每次進行更改(即更新,插入,刪除)時,都會更新單詞表上的計數器列。

暫無
暫無

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

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