❗️ 변경사항
v0.1
drop table reply;
drop table heart;
drop table image;
drop table post;
drop table channel;
drop table token;
drop table member;
drop table reply_heart;
--sequence
CREATE SEQUENCE SEQ_REPLY_ID
INCREMENT BY 1;
CREATE SEQUENCE SEQ_HEART_ID
INCREMENT BY 1;
CREATE SEQUENCE SEQ_IMAGE_ID
INCREMENT BY 1;
CREATE SEQUENCE SEQ_POST_ID
INCREMENT BY 1;
CREATE SEQUENCE SEQ_CHANNEL_ID
INCREMENT BY 1;
CREATE SEQUENCE SEQ_MEMBER_ID
INCREMENT BY 1;
CREATE SEQUENCE SEQ_TOKEN_ID
INCREMENT BY 1;
CREATE SEQUENCE SEQ_REPLY_HEART_ID
INCREMENT BY 1;
create table channel (
id number(10,0) not null,
name varchar(255),
location varchar(255),
description varchar(500),
business_hours varchar(255),
phone_number varchar(255),
created_date timestamp default sysdate,
modified_date timestamp default sysdate,
removed char(1) default 0 not null,
primary key (id)
);
alter table channel add image_url varchar(500);
create table reply (
id number(10,0) not null,
content varchar(500),
post_id number(10,0),
member_id number(10,0),
parent_id number(10,0),
depth number(1,0) not null,
created_date timestamp default sysdate,
modified_date timestamp default sysdate,
removed char(1) default 0 not null,
primary key (id)
);
create table heart (
id number(10,0) not null,
post_id number(10,0),
member_id number(10,0),
created_date timestamp default sysdate,
modified_date timestamp default sysdate,
removed char(1) default 0 not null,
primary key (id)
);
create table image (
id number(10,0) not null,
orders number(1,0) default 1,
post_id number(10,0),
image_url varchar(500),
created_date timestamp default sysdate,
modified_date timestamp default sysdate,
removed char(1) default 0 not null,
primary key (id)
);
create table member (
id number(10,0) not null,
email varchar(255) not null,
nickname varchar(255),
introduction varchar(500),
image_url varchar(500),
created_date timestamp default sysdate,
modified_date timestamp default sysdate,
removed char(1) default 0 not null,
primary key (id)
);
create table post (
id number(10,0) not null,
title varchar(255),
content varchar(2000),
member_id number(10,0),
channel_id number(10,0),
read_count number(10,0) default 0 not null,
created_date timestamp default sysdate,
modified_date timestamp default sysdate,
removed char(1) default 0 not null,
primary key (id)
);
create table token (
id number(10,0) not null,
member_id number(10, 0),
access_token varchar(255),
refresh_token varchar(255),
created_date timestamp default sysdate,
modified_date timestamp default sysdate,
removed char(1) default 0 not null,
primary key (id)
);
create table reply_heart (
id number(10,0) not null,
reply_id number(10,0),
member_id number(10,0),
created_date timestamp default sysdate,
modified_date timestamp default sysdate,
removed char(1) default 0 not null,
primary key (id)
);
// FK_현재테이블_to_자식테이블_컬럼이름
alter table reply
add constraint FK_reply_parent_id
foreign key (parent_id)
references reply (id);
alter table reply
add constraint FK_reply_post_id
foreign key (post_id)
references post (id);
alter table heart
add constraint FK_heart_member_id
foreign key (member_id)
references member (id);
alter table heart
add constraint FK_heart_post_id
foreign key (post_id)
references post (id);
alter table image
add constraint FK_image_post_id
foreign key (post_id)
references post (id);
alter table post
add constraint FK_post_channel_id
foreign key (channel_id)
references channel (id);
alter table token
add constraint FK_token_member_id
foreign key (member_id)
references member (id);
alter table reply_heart
add constraint FK_reply_heart_member_id
foreign key (member_id)
references member (id);
alter table reply_heart
add constraint FK_reply_heart_post_id
foreign key (reply_id)
references reply (id);
--pl sql
CREATE OR REPLACE PROCEDURE GetPreviousAndNextPostId(
p_current_post_id IN NUMBER,
p_previous_post_id OUT NUMBER,
p_next_post_id OUT NUMBER
) AS
BEGIN
-- 이전 게시글 ID 조회
SELECT MAX(id) INTO p_previous_post_id
FROM post
WHERE id < p_current_post_id;
-- 이후 게시글 ID 조회
SELECT MIN(id) INTO p_next_post_id
FROM post
WHERE id > p_current_post_id;
END GetPreviousAndNextPostId;
/