\timing
-- Table temporaire pour inserer les appellations
create table appellation_tmp (
        libelle text,
        region text
);


-- Fonction appelee dans le trigger pour effectuer l'insertion des
-- appellations dans les tables appellation et region
CREATE OR REPLACE FUNCTION insert_appellation_tmp() RETURNS TRIGGER AS
$$
DECLARE
  _region_id integer;
BEGIN

  -- Chercher l'id dans la table region
  select id into _region_id from region
  where libelle ilike NEW.region;

  -- Si la region n'est pas presente dans la table region, l'ajouter
  IF NOT FOUND THEN
    insert into region (libelle) values (NEW.region);
    select id into _region_id from region
    where libelle ilike NEW.region;
  END IF;

  -- Inserer l'element dans la table finale
  insert into appellation (libelle, region_id) values (NEW.libelle,
          _region_id);

  -- Suppression de l'item dans la table temporaire
  delete from appellation_tmp
  where libelle = NEW.libelle and region = NEW.region;

  RETURN NEW;
END;
$$ LANGUAGE plpgsql;


-- Trigger pour inserer les appellations de type (libelle, region) dans les
-- tables regions (id, libelle) et appellation (id, libelle, region_id)
create trigger trig_appellation_tmp after insert on appellation_tmp
FOR each ROW EXECUTE PROCEDURE insert_appellation_tmp();


-- Suppression des anciennes donnees
TRUNCATE table region, appellation, vin, stock;


-- Re-initialisation des sequences
alter SEQUENCE appellation_id_seq RESTART 1;
alter SEQUENCE region_id_seq RESTART 1;
alter SEQUENCE vin_id_seq RESTART 1;


-- Insertion des donnees
COPY appellation_tmp (libelle, region) from stdin;
Ajaccio	Provence et Corse
Aloxe-Corton	Bourgogne
Alsace Chasselas ou Gutedel	Alsace
Alsace Gewurztraminer	Alsace
Alsace grand cru	Alsace
Alsace grand cru Altenberg de Bergbieten	Alsace
Alsace grand cru Altenberg de Bergheim	Alsace
Alsace grand cru Altenberg de Wolxheim	Alsace
Alsace grand cru Brand	Alsace
Alsace grand cru Eichberg	Alsace
Alsace grand cru Engelberg	Alsace
Alsace grand cru Florimont	Alsace
Alsace grand cru Frankstein	Alsace
Alsace grand cru Froehn	Alsace
Alsace grand cru Fuerstentum	Alsace
Alsace grand cru Geisberg	Alsace
Alsace grand cru Gloeckelberg	Alsace
Alsace grand cru Goldert	Alsace
Alsace grand cru Hatschbourg	Alsace
Alsace grand cru Hengst	Alsace
Alsace grand cru Kanzlerberg	Alsace
Alsace grand cru Kirchberg de Barr	Alsace
Alsace grand cru Kirchberg de Ribeauville	Alsace
Alsace grand cru Kitterle	Alsace
Alsace grand cru Mambourg	Alsace
Alsace grand cru Mandelberg	Alsace
Alsace grand cru Muenchberg	Alsace
Alsace grand cru Ollwiller	Alsace
Alsace grand cru Osterberg	Alsace
Alsace grand cru Pfersichberg	Alsace
Alsace grand cru Pfingstberg	Alsace
Alsace grand cru Praelatenberg	Alsace
Alsace grand cru Rangen	Alsace
Alsace grand cru Rosacker	Alsace
Alsace grand cru Saering	Alsace
Alsace grand cru Schlossberg	Alsace
Alsace grand cru Schoenenbourg	Alsace
Alsace grand cru Sommerberg	Alsace
Alsace grand cru Spiegel	Alsace
Alsace grand cru Steinert	Alsace
Alsace grand cru Steingrubler	Alsace
Alsace grand cru Steinklotz	Alsace
Alsace grand cru Vorbourg	Alsace
Alsace grand cru Wineck-Schlossberg	Alsace
Alsace grand cru Winzenberg	Alsace
Alsace grand cru Zinnkoepfle	Alsace
Alsace grand cru Zotzenberg	Alsace
Alsace Klevener de Heiligenstein	Alsace
Alsace Muscat	Alsace
Alsace Pinot noir	Alsace
Alsace Pinot ou Klevner	Alsace
Alsace Riesling	Alsace
Alsace Sylvaner	Alsace
Alsace Tokay-Pinot Gris	Alsace
Anjou-Coteaux de la Loire	Loire
Anjou-gamay	Loire
Anjou-villages	Loire
Anjou	Loire
Arbois (Jura)	Jura
Auxey-Duresses	Bourgogne
Bandol	Provence
Banyuls grand cru	Languedoc-Roussillon
Banyuls	Languedoc-Roussillon
Barsac	Bordeaux
Batard-Montrachet	Bourgogne
Bearn	Vignoble du Sud-Ouest
Beaujolais-villages	Beaujolais
Beaujolais	Beaujolais
Beaumes-de-Venise	Cotes du Rhone
Beaune	Bourgogne
Bellet	Provence et Corse
Bergerac	Vignoble du Sud-Ouest
Bergerac sec	Vignoble du Sud-Ouest
Bergerac rose	Vignoble du Sud-Ouest
Blanquette de Limoux	Languedoc-Roussillon
Blaye	Bordeaux
Bonnes-Mares	Bourgogne
Bonnezeaux	Loire
Bordeaux clairet	Bordeaux
Bordeaux cotes de Francs	Bordeaux
Bordeaux rose	Bordeaux
Bordeaux sec	Bordeaux
Bordeaux superieur	Bordeaux
Bordeaux	Bordeaux
Bourgogne aligote	Bourgogne
Bourgogne aligote bouzeron	Bourgogne
Bourgogne Hautes-cotes de Beaune	Bourgogne
Bourgogne Hautes-cotes de Nuits	Bourgogne
Bourgogne passetoutgrain	Bourgogne
Bourgogne	Bourgogne
Bourgueil	Loire
Brouilly	Beaujolais
Bugey	Jura
Buzet	Vignoble du Sud-Ouest
Cabardes	Languedoc-Roussillon
Cabernet d'Anjou	Loire
Cadillac	Bordeaux
Cahors	Vignoble du Sud-Ouest
Canon-Fronsac	Bordeaux
Cassis	Provence produit a Cassis.
Cerons	Bordeaux
Chablis	Bourgogne
Chablis grand cru	Bourgogne
Chablis premier cru	Bourgogne
Chambertin	Bourgogne
Chambolle Musigny	Bourgogne
Champagne	Champagne
Charmes-Chambertin	Bourgogne
Chassagne-Montrachet	Bourgogne
Chateau-chalon (jura)	Jura
Chateau-grillet	Cotes du Rhone
Chateaumeillant	Loire
Chateauneuf-du-Pape	Cotes du Rhone
Chenas	Beaujolais
Chevalier-Montrachet	Bourgogne
Cheverny	Loire
Chinon	Loire
Chiroubles	Beaujolais
Chorey-les-Beaune	Bourgogne
Clairette de Bellegarde	Languedoc-Roussillon
Clairette de die	Cotes du Rhone
Clairette du Languedoc	Languedoc-Roussillon
Clos de Vougeot	Bourgogne
Clos Saint-Denis	Bourgogne
Collioure	Languedoc-Roussillon
Condrieu	Cotes du Rhone
Corbieres	Languedoc-Roussillon
Cornas	Cotes du Rhone
Corse	Provence et Corse
Corton-Charlemagne	Bourgogne
Corton	Bourgogne
Costieres de Nimes	Languedoc-Roussillon
Cote de Beaune blanc	Bourgogne
Cote de Brouilly	Beaujolais
Cote de Nuits-villages	Bourgogne
Cote roannaise	Loire
Cote Rotie	Cotes du Rhone
Coteaux champenois (champagne)	Champagne
Coteaux d'Aix	Provence et Corse
Coteaux de l'Aubance	Loire
Coteaux de Pierrevert	Provence
Coteaux du Giennois	Loire
Coteaux du Languedoc	Languedoc-Roussillon
Coteaux du Layon	Loire
Coteaux du Loir	Loire
Coteaux du Lyonnais	Lyonnais
Coteaux du Tricastin	Cotes du Rhone
Coteaux du Vendomois aovdqs	Loire
Coteaux varois	Provence et Corse
Cotes d'Auvergne	Auvergne
Cotes de Beaune	Bourgogne
Cotes de Bergerac Blanc	Vignoble du Sud-Ouest
Cotes de Bergerac	Vignoble du Sud-Ouest
Cotes de Blaye	Bordeaux
Cotes de Bourg	Bordeaux
Cotes de Castillon	Bordeaux
Cotes de Duras	Vignoble du Sud-Ouest
Cotes de la Malepere	Languedoc-Roussillon
Cotes de Provence	Provence et Corse
Cotes de Saint-Mont	Vignoble du Sud-Ouest
Cotes de Toul	Est
Cotes du Forez	Forez
Cotes du Frontonnais	Vignoble du Sud-Ouest
Cotes du Jura	Jura
Cotes du Luberon	Cotes du Rhone
Cotes du Marmandais	Vignoble du Sud-Ouest
Cotes du Rhone-villages	Cotes du Rhone
Cotes du Rhone	Cotes du Rhone
Cotes du Roussillon-villages	Languedoc-Roussillon
Cotes du Roussillon	Languedoc-Roussillon
Cotes du Ventoux	Cotes du Rhone
Cotes du Vivarais	Cotes du Rhone
Cour-Cheverny	Loire
Cremant d'Alsace	Alsace
Cremant de Bordeaux	Bordeaux
Cremant du Jura	Jura
Crozes-hermitage	Cotes du Rhone
Echezeaux	Bourgogne
Entre-deux-Mers	Bordeaux
Faugeres	Languedoc-Roussillon
Fiefs vendeens	Loire
Fitou	Languedoc-Roussillon
Fixin	Bourgogne
Fleurie	Beaujolais
Fronsac	Bordeaux
Gaillac	Vignoble du Sud-Ouest
Gevrey-Chambertin	Bourgogne
Gigondas	Cotes du Rhone
Givry	Bourgogne
Graves de Vayres	Bordeaux
Graves superieures	Bordeaux
Graves	Bordeaux
Gros plant	Loire
Haut-Medoc	Bordeaux
Haut-Montravel	Vignoble du Sud-Ouest
Haut-Poitou (vin)	Loire
Hermitage	Cotes du Rhone
Irancy	Bourgogne
Irouleguy	Vignoble du Sud-Ouest
Julienas	Beaujolais
Jurancon sec	Vignoble du Sud-Ouest
Jurancon doux	Vignoble du Sud-Ouest
L'Etoile (Jura)	Jura
Ladoix	Bourgogne
Lalande de Pomerol	Bordeaux
Limoux	Languedoc-Roussillon
Lirac	Cotes du Rhone
Listrac-Medoc	Bordeaux
Loupiac	Bordeaux
Macon superieur	Bourgogne
Macon-villages	Bourgogne
Macon	Bourgogne
Madiran	Vignoble du Sud-Ouest
Maranges	Bourgogne
Marcillac	Vignoble du Sud-Ouest
Margaux	Bordeaux
Marsannay	Bourgogne
Maury	Languedoc-Roussillon
Mazis-Chambertin	Bourgogne
Medoc	Bordeaux
Menetou-Salon	Loire
Mercurey	Bourgogne
Meursault	Bourgogne
Minervois	Languedoc-Roussillon
Monbazillac	Vignoble du Sud-Ouest
Montagne Saint-Emilion	Bordeaux
Montagny	Bourgogne
Monthelie	Bourgogne
Montlouis	Loire
Montrachet	Bourgogne
Montravel	Vignoble du Sud-Ouest
Morey-Saint-Denis	Bourgogne
Morgon	Beaujolais
Moselle (vin)	Est
Moulin a vent	Beaujolais
Moulis en Medoc	Bordeaux
Muscadet Cotes de Grand-Lieu	Loire
Muscadet de Sevre-et-Maine	Loire
Muscadet des coteaux de la Loire	Loire
Muscadet	Loire
Muscat de Beaumes-de-Venise	Languedoc-Roussillon
Muscat de Lunel	Languedoc-Roussillon
Muscat de Mireval	Languedoc-Roussillon
Muscat de Rivesaltes	Languedoc-Roussillon
Muscat de Saint-Jean de Minervois	Languedoc-Roussillon
Nuits-Saint-Georges	Bourgogne
Pacherenc du Vic-Bilh	Vignoble du Sud-Ouest
Patrimonio	Provence et Corse
Pauillac	Bordeaux
Pecharmant	Vignoble du Sud-Ouest
Pernand-Vergelesses	Bourgogne
Pessac Leognan	Bordeaux
Petit chablis	Bourgogne
Pineau des Charentes	Charente
Pomerol	Bordeaux
Pommard	Bourgogne
Pouilly-Fuisse	Bourgogne
Pouilly-Fume	Loire
Pouilly-Loche	Bourgogne
Pouilly-sur-Loire	Loire
Pouilly-Vinzelles	Bourgogne
Premieres Cotes de Blaye	Bordeaux
Premieres Cotes de Bordeaux	Bordeaux
Puisseguin Saint-Emilion	Bordeaux
Puligny-Montrachet	Bourgogne
Quarts de chaume	Loire
Quincy	Loire
Regnie	Beaujolais
Reuilly	Loire
Richebourg	Bourgogne
Rivesaltes	Languedoc-Roussillon
Rose d'Anjou	Loire
Rose de Loire	Loire
Rose des Riceys (champagne)	Champagne
Roussette de Savoie	Savoie
Ruchottes-Chambertin	Bourgogne
Rully	Bourgogne
Saint-Peray	Cotes du Rhone
Saint-Amour	Beaujolais
Saint-Aubin	Bourgogne
Saint-Chinian	Languedoc-Roussillon
Saint-Emilion grand cru	Bordeaux
Saint-Emilion	Bordeaux
Saint-Estephe	Bordeaux
Saint-Georges Saint-Emilion	Bordeaux
Saint-Joseph	Cotes du Rhone
Saint-Julien	Bordeaux
Saint-Nicolas-de-Bourgueil	Loire
Saint-Pourcain	Loire
Saint-Romain	Bourgogne
Saint-Veran	Bourgogne
Sainte-Croix-du-Mont	Bordeaux
Sainte-Foix-Bordeaux	Bordeaux
Sancerre	Loire
Santenay	Bourgogne
Saumur sec blanc	Loire
Saumur-Champigny	Loire
Saumur	Loire
Saussignac	Vignoble du Sud-Ouest
Sauternes	Bordeaux
Savennieres	Loire
Savigny-les-Beaune	Bourgogne
Seyssel	Savoie
Tavel	Cotes du Rhone
Touraine Amboise	Loire
Touraine-Azay-le-Rideau	Loire
Touraine-Mesland	Loire
Touraine	Loire
Tursan	Vignoble du Sud-Ouest
Vacqueyras	Cotes du Rhone
Valencay	Loire
Vin de Corse	Provence et Corse
Vin de Pays de l'Herault	Cotes du Rhone
Vin de Savoie	Savoie
Vinsobres	Cotes du Rhone
Volnay	Bourgogne
Vosne-Romanee	Bourgogne
Vougeot	Bourgogne
Vouvray	Loire
\.


-- Suppression de la table temporaire
drop table appellation_tmp cascade;
drop function insert_appellation_tmp();
