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,2NOT NULL,
cash NUMERIC(11,2NOT NULL,
payments NUMERIC(11,2NOT NULL,
remain_payment NUMERIC(11,2NOT 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

Popular posts from this blog

Create Table Payments

Komputer Lambat