File size: 964 Bytes
24480a0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-- backend/memory/create_oracle_memories_table.sql
-- Run once on the Oracle instance (Oracle 12c+ required for FETCH NEXT syntax).
--
-- Changes vs prototype:
--   + INDEX on user_id to avoid full-scan on every list_memories() call.
--   + NVARCHAR2 / NCLOB commented out as alternatives for multi-byte content.

CREATE TABLE memories (
    user_id    VARCHAR2(255)  NOT NULL,
    memory_id  VARCHAR2(36)   NOT NULL,   -- UUID format (36 chars)
    data       CLOB,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    CONSTRAINT pk_memories PRIMARY KEY (user_id, memory_id)
);

-- Speeds up list_memories() WHERE user_id = :x (avoids PK full-scan)
CREATE INDEX idx_memories_user ON memories (user_id);

-- Auto-update updated_at on every UPDATE
CREATE OR REPLACE TRIGGER trg_memories_updated_at
BEFORE UPDATE ON memories
FOR EACH ROW
BEGIN
    :NEW.updated_at := CURRENT_TIMESTAMP;
END;
/