IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sybase Discussion :

[SYBASE] Insert sur view


Sujet :

Sybase

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 67
    Points : 79
    Points
    79
    Par défaut [SYBASE] Insert sur view
    Bonjour,

    supposons une vue MY_VIEW et deux tables MY_TABLE_1 et MY_TABLE_2.

    avec pour MY_TABLE_1

    COLUMN_1
    COLUMN_2
    COLUMN_3

    pour MY_TABLE_2

    COLUMN_1
    COLUMN_2
    COLUMN_3

    MY_TABLE_1 et MY_TABLE_2 ayant les meme structures et contenant les memes types de donnees (grosso modo MY_TABLE_2 contient des donnees qui ont ete deplacees depuis MY_TABLE_1)

    MY_VIEW est une jointure de ces deux tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * from MY_TABLE_1
    union
    select * from MY_TABLE_2
    ma question concerne les ordres insert, update et delete.
    Que se passe t'il si je fais un

    insert into MY_VIEW (data_for_column_1, data_for_column_2, data_for_column_3)

    Est ce possible et si oui sur quelle table va etre insere l'enregistrement ?

    Et pour les autres ordres, j'ai cru comprendre dans la doc sybase que je ne pourrais en faire .

    Merci d'avance
    Java, JDBC, SQL, Oracle

    Specialiste Kamehameha des blagues-boulets

    Barman de la taverne

  2. #2
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    comme son nom l'indique VIEW est une vue.

    Or je n'ai jamais entendu parler de la possibilité de faire un insert sur une VIEW.
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 67
    Points : 79
    Points
    79
    Par défaut
    Hummm ma question n'est pas aussi bete qu'il y parait

    voici un extrait de la documentation Sybase :

    Adaptive Server Enterprise version 12
    Réf. du document : 37926-01-1200-01
    Dernière mise à jour : octobre 1999

    Les instructions insert ne sont pas autorisées dans les vues avec
    jointures, créées avec distinct ou with check option.
    J'admet que dans cette phrase je trouve une partie de mes reponses neanmoins il semble possible de faire des insert !

    je reformule donc, est il donc impossible dans mon cas de faire un insert ou existe il une feinte ?
    Java, JDBC, SQL, Oracle

    Specialiste Kamehameha des blagues-boulets

    Barman de la taverne

  4. #4
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    la feinte est d'utiliser le trigger INSERT de la table TABLE1 qui va automatiquement faire le meme INSERT dans la table TABLE2 (petit truc à développer tout de meme).
    Et on peut faire l'inverse pour un insert dans TABLE2.

    Mais le soucis est que des que tu insert dans TABLE1, ca sera inséré systemétiquement dans TABLE2 et il sera impossible de contourner le trigger sans le supprimer puis le recréer.

    Maintenant, l'idéal est de gérer ca via une procédure stockée avec toutes les colonnes en paramètre et l'insert sur chaque table.
    De ce fait, tu gardes encore la possibilité de faire des insert indépendants à chaque table.
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

  5. #5
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 220
    Points : 19 549
    Points
    19 549
    Billets dans le blog
    25
    Par défaut
    1) l'union dans la vue n'est possible que depuis Sybase ASE 12.5
    2) la modification via une vue sur plusieurs tables requiert un certain nombre de contraintes, dont celle de pouvoir distinguer l'unicité de l'enregistrement modifié : ce n'est pas le cas avec un UNION
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

Discussions similaires

  1. [Debutant]Probleme d'insert sur sequence !
    Par Tchinkatchuk dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/04/2005, 16h37
  2. INSERT sur plusieurs tables
    Par juniorAl dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/03/2005, 19h59
  3. [debutant] select-insert sur tables de bases differentes
    Par RedMax dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/10/2004, 19h59
  4. Pb insert sur postgresql 8 (windows)
    Par testeur dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/10/2004, 18h44
  5. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo