Create Table orders
CREATE FUNCTION orders_on_create() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.remain_payment = NEW.total - (NEW.cash + NEW.payments);
NEW.updated_at = now();
RETURN NEW;
END;
$$;
CREATE SEQUENCE orders_sequence
AS INT
START 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
CREATE TABLE orders (
id INT NOT NULL DEFAULT nextval('orders_sequence'::regclass),
customer_id SMALLINT NOT NULL,
sales_id SMALLINT NOT NULL,
due_date TIMESTAMP NOT NULL,
total NUMERIC(11,2) NOT NULL,
cash NUMERIC(11,2) NOT NULL,
payments NUMERIC(11,2) NOT NULL,
remain_payment NUMERIC(11,2) NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL
);
ALTER TABLE ONLY orders
ADD CONSTRAINT pk_orders PRIMARY KEY (id);
CREATE INDEX orders_ix_customers ON orders
USING btree (customer_id);
CREATE INDEX orders_ix_sales ON orders
USING btree (sales_id);
CREATE TRIGGER orders_trig_update
BEFORE INSERT OR UPDATE ON orders FOR EACH ROW
EXECUTE FUNCTION orders_on_create();
ALTER TABLE ONLY orders
ADD CONSTRAINT orders_fk_customers
FOREIGN KEY (customer_id)
REFERENCES customers(id)
ON UPDATE CASCADE
ON DELETE RESTRICT;
ALTER TABLE ONLY orders
ADD CONSTRAINT orders_fk_sales
FOREIGN KEY (sales_id)
REFERENCES sales(id)
ON UPDATE CASCADE
ON DELETE RESTRICT;
Comments
Post a Comment