-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase_setup.sql
More file actions
53 lines (45 loc) · 1.53 KB
/
database_setup.sql
File metadata and controls
53 lines (45 loc) · 1.53 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
-- 승부예측 테이블 생성
-- Supabase SQL Editor에서 실행하세요
CREATE TABLE IF NOT EXISTS predictions (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL,
student_id TEXT NOT NULL UNIQUE,
phone TEXT NOT NULL,
first_place TEXT NOT NULL,
second_place TEXT NOT NULL,
third_place TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- 인덱스 생성 (성능 향상)
CREATE INDEX IF NOT EXISTS idx_predictions_student_id ON predictions(student_id);
CREATE INDEX IF NOT EXISTS idx_predictions_created_at ON predictions(created_at);
-- RLS (Row Level Security) 설정
ALTER TABLE predictions ENABLE ROW LEVEL SECURITY;
-- 모든 사용자가 읽기 가능하도록 정책 설정
CREATE POLICY "Allow public read access" ON predictions
FOR SELECT USING (true);
-- 인증된 사용자만 생성 가능하도록 정책 설정
CREATE POLICY "Allow authenticated insert" ON predictions
FOR INSERT WITH CHECK (true);
-- 업데이트 시 자동으로 updated_at 갱신
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ language 'plpgsql';
CREATE TRIGGER update_predictions_updated_at
BEFORE UPDATE ON predictions
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();
-- 테이블 정보 확인
SELECT
column_name,
data_type,
is_nullable,
column_default
FROM information_schema.columns
WHERE table_name = 'predictions'
ORDER BY ordinal_position;