32 lines
1.2 KiB
MySQL
32 lines
1.2 KiB
MySQL
|
|
-- =========================================================================
|
||
|
|
-- Migration 017: Opportunity Line Items
|
||
|
|
-- =========================================================================
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS pipeline_opportunity_lines (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
opportunity_id INTEGER NOT NULL REFERENCES pipeline_opportunities(id) ON DELETE CASCADE,
|
||
|
|
product_number VARCHAR(100),
|
||
|
|
name VARCHAR(255) NOT NULL,
|
||
|
|
description TEXT,
|
||
|
|
quantity INTEGER NOT NULL DEFAULT 1,
|
||
|
|
unit_price NUMERIC(12, 2) NOT NULL DEFAULT 0,
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_pipeline_opportunity_lines_opportunity_id ON pipeline_opportunity_lines(opportunity_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_pipeline_opportunity_lines_product_number ON pipeline_opportunity_lines(product_number);
|
||
|
|
|
||
|
|
CREATE OR REPLACE FUNCTION update_pipeline_opportunity_lines_updated_at()
|
||
|
|
RETURNS TRIGGER AS $$
|
||
|
|
BEGIN
|
||
|
|
NEW.updated_at = CURRENT_TIMESTAMP;
|
||
|
|
RETURN NEW;
|
||
|
|
END;
|
||
|
|
$$ LANGUAGE plpgsql;
|
||
|
|
|
||
|
|
CREATE TRIGGER update_pipeline_opportunity_lines_updated_at
|
||
|
|
BEFORE UPDATE ON pipeline_opportunity_lines
|
||
|
|
FOR EACH ROW
|
||
|
|
EXECUTE FUNCTION update_pipeline_opportunity_lines_updated_at();
|