<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.riguz.com/index.php?action=history&amp;feed=atom&amp;title=Sqlite3_advanced_feature</id>
	<title>Sqlite3 advanced feature - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.riguz.com/index.php?action=history&amp;feed=atom&amp;title=Sqlite3_advanced_feature"/>
	<link rel="alternate" type="text/html" href="https://wiki.riguz.com/index.php?title=Sqlite3_advanced_feature&amp;action=history"/>
	<updated>2026-06-02T22:44:52Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.riguz.com/index.php?title=Sqlite3_advanced_feature&amp;diff=5047&amp;oldid=prev</id>
		<title>Riguz：​创建页面，内容为“&lt;syntaxhighlight lang=&quot;sql&quot;&gt; CREATE TABLE     Notes (         id UUID PRIMARY KEY,         title TEXT,         content JSON NOT NULL,         content_checksum TEXT NOT NULL,         content_plaintext TEXT NOT NULL,         classification CHAR(1) NOT NULL CHECK (classification IN (&#039;C&#039;, &#039;S&#039;, &#039;T&#039;)), -- C = Confidential, S = Secret, T = Top Secret         created_at DATETIME DEFAULT CURRENT_TIMESTAMP,         updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,         d…”</title>
		<link rel="alternate" type="text/html" href="https://wiki.riguz.com/index.php?title=Sqlite3_advanced_feature&amp;diff=5047&amp;oldid=prev"/>
		<updated>2025-07-01T06:36:37Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt; CREATE TABLE     Notes (         id UUID PRIMARY KEY,         title TEXT,         content JSON NOT NULL,         content_checksum TEXT NOT NULL,         content_plaintext TEXT NOT NULL,         classification CHAR(1) NOT NULL CHECK (classification IN (&amp;#039;C&amp;#039;, &amp;#039;S&amp;#039;, &amp;#039;T&amp;#039;)), -- C = Confidential, S = Secret, T = Top Secret         created_at DATETIME DEFAULT CURRENT_TIMESTAMP,         updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,         d…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE&lt;br /&gt;
    Notes (&lt;br /&gt;
        id UUID PRIMARY KEY,&lt;br /&gt;
        title TEXT,&lt;br /&gt;
        content JSON NOT NULL,&lt;br /&gt;
        content_checksum TEXT NOT NULL,&lt;br /&gt;
        content_plaintext TEXT NOT NULL,&lt;br /&gt;
        classification CHAR(1) NOT NULL CHECK (classification IN (&amp;#039;C&amp;#039;, &amp;#039;S&amp;#039;, &amp;#039;T&amp;#039;)), -- C = Confidential, S = Secret, T = Top Secret&lt;br /&gt;
        created_at DATETIME DEFAULT CURRENT_TIMESTAMP,&lt;br /&gt;
        updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,&lt;br /&gt;
        deleted_at DATETIME DEFAULT NULL&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE&lt;br /&gt;
    NoteHistory (&lt;br /&gt;
        id INTEGER PRIMARY KEY AUTOINCREMENT,&lt;br /&gt;
        note_id UUID NOT NULL,&lt;br /&gt;
        content JSON NOT NULL,&lt;br /&gt;
        content_checksum TEXT NOT NULL,&lt;br /&gt;
        content_plaintext TEXT NOT NULL,&lt;br /&gt;
        changed_at DATETIME DEFAULT CURRENT_TIMESTAMP,&lt;br /&gt;
        FOREIGN KEY (note_id) REFERENCES Notes (id)&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
CREATE VIRTUAL TABLE NoteSearch USING FTS5 (&lt;br /&gt;
    id UNINDEXED,&lt;br /&gt;
    title,&lt;br /&gt;
    abstract,&lt;br /&gt;
    content_plaintext,&lt;br /&gt;
    created_at UNINDEXED&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TRIGGER UpdateNoteSearch_Insert AFTER INSERT ON Notes WHEN NEW.deleted_at IS NULL BEGIN&lt;br /&gt;
INSERT INTO&lt;br /&gt;
    NoteSearch (&lt;br /&gt;
        id,&lt;br /&gt;
        title,&lt;br /&gt;
        abstract,&lt;br /&gt;
        content_plaintext,&lt;br /&gt;
        created_at&lt;br /&gt;
    )&lt;br /&gt;
VALUES&lt;br /&gt;
    (&lt;br /&gt;
        NEW.id,&lt;br /&gt;
        NEW.title,&lt;br /&gt;
        SUBSTR (&lt;br /&gt;
            NEW.content_plaintext,&lt;br /&gt;
            1,&lt;br /&gt;
            INSTR (&lt;br /&gt;
                NEW.content_plaintext,&lt;br /&gt;
                &amp;#039;\n&amp;#039;,&lt;br /&gt;
                INSTR (NEW.content_plaintext, &amp;#039;\n&amp;#039;) + 1&lt;br /&gt;
            ) - 1&lt;br /&gt;
        ),&lt;br /&gt;
        NEW.content_plaintext,&lt;br /&gt;
        NEW.created_at&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
END;&lt;br /&gt;
&lt;br /&gt;
CREATE TRIGGER UpdateNoteSearch_Update AFTER&lt;br /&gt;
UPDATE ON Notes WHEN NEW.deleted_at IS NULL BEGIN&lt;br /&gt;
INSERT INTO&lt;br /&gt;
    NoteSearch (&lt;br /&gt;
        id,&lt;br /&gt;
        title,&lt;br /&gt;
        abstract,&lt;br /&gt;
        content_plaintext,&lt;br /&gt;
        created_at&lt;br /&gt;
    )&lt;br /&gt;
VALUES&lt;br /&gt;
    (&lt;br /&gt;
        NEW.id,&lt;br /&gt;
        NEW.title,&lt;br /&gt;
        SUBSTR (&lt;br /&gt;
            NEW.content_plaintext,&lt;br /&gt;
            1,&lt;br /&gt;
            INSTR (&lt;br /&gt;
                NEW.content_plaintext,&lt;br /&gt;
                &amp;#039;\n&amp;#039;,&lt;br /&gt;
                INSTR (NEW.content_plaintext, &amp;#039;\n&amp;#039;) + 1&lt;br /&gt;
            ) - 1&lt;br /&gt;
        ),&lt;br /&gt;
        NEW.content_plaintext,&lt;br /&gt;
        NEW.created_at&lt;br /&gt;
    ) ON CONFLICT (id) DO&lt;br /&gt;
UPDATE&lt;br /&gt;
SET&lt;br /&gt;
    title = NEW.title,&lt;br /&gt;
    abstract = SUBSTR (&lt;br /&gt;
        NEW.content_plaintext,&lt;br /&gt;
        1,&lt;br /&gt;
        INSTR (&lt;br /&gt;
            NEW.content_plaintext,&lt;br /&gt;
            &amp;#039;\n&amp;#039;,&lt;br /&gt;
            INSTR (NEW.content_plaintext, &amp;#039;\n&amp;#039;) + 1&lt;br /&gt;
        ) - 1&lt;br /&gt;
    ),&lt;br /&gt;
    content_plaintext = NEW.content_plaintext,&lt;br /&gt;
    created_at = NEW.created_at;&lt;br /&gt;
&lt;br /&gt;
END;&lt;br /&gt;
&lt;br /&gt;
CREATE TRIGGER RemoveNoteSearch AFTER&lt;br /&gt;
UPDATE ON Notes WHEN NEW.deleted_at IS NOT NULL BEGIN&lt;br /&gt;
DELETE FROM NoteSearch&lt;br /&gt;
WHERE&lt;br /&gt;
    id = OLD.id;&lt;br /&gt;
&lt;br /&gt;
END;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sqlite3]]&lt;br /&gt;
[[Category:Database]]&lt;/div&gt;</summary>
		<author><name>Riguz</name></author>
	</entry>
</feed>