2016-08-31 1 views
1

Je suis aux prises avec ce problème spécifique pendant des heures. J'espère que quelqu'un pourra m'aider à ce sujet.Oracle Apex: comment mettre à jour une forme tabulaire d'une table avec la clé primaire définie comme Identity Always?

Comme la question décrite ci-dessus, j'ai une forme tabulaire qui est construite à partir d'une table, qui a une clé primaire («ID») définie comme «identité toujours». Cela est devenu un problème pour la forme tabulaire, car chaque fois que j'apportais des modifications aux données et que je cliquais sur Enregistrer, Apex affiche cette erreur: ORA-32796: impossible de mettre à jour une colonne d'identité générée

J'ai essayé plusieurs solutions de contournement telles que comme ROWID, mais cette solution ne fonctionnerait pas car j'ai besoin de joindre le formulaire tabulaire avec les champs d'autres tables pour afficher des informations supplémentaires - d'où le ROWID ne serait pas conservé et ne pourrait pas être utilisé comme clé primaire.

Je lis aussi dans un Apex documentation que:

Utilizing the IDENTITY clause on a table can have an impact on Application Express applications. An error will be raised by the database if an IDENTITY column, with ALWAYS parameter specified, is included in an INSERT or UPDATE statement. The Application Express Builder has been enhanced to allow the specification of the identity clause within the Create Table Wizard. The Create Form wizard will generate a "Display Only" item for an identity column with the ALWAYS parameter.

Ce que je ne comprends pas. Apex a en effet généré une colonne supplémentaire ('ID_Display'), mais cela ne change rien au fait que ma forme tabulaire renvoie toujours la même erreur (ORA-32796 ci-dessus). Comment cet élément "Affichage uniquement" peut-il me sauver de la "Impossible de mettre à jour une colonne d'identité toujours générée"?

En note, je développe Apex.oraclecorp.com, Apex en tant que service, où je ne peux pas accéder aux fichiers ou faire des modifications SQL à ma table. S'il vous plaît laissez-moi savoir si vous avez déjà rencontré ce problème et trouvé une solution - merci d'avance!

P.S. la version Apex est 5.0.4.

EDIT:

Désolé, je viens de réaliser il y a la commande SQL interface utilisateur pour effectuer une opération SQL dans Apex. Quelqu'un sait comment ALTER l'identité d'une table de TOUJOURS à DÉFAUT?

Répondre

0

Je suis sûr que cela est plus d'une solution de contournement d'une compréhension réelle du problème et de la solution, mais dans l'assistant, je trouve que:

lorsque vous êtes sous la forme « Attributs » dans le cadre de l'assistant comme suit:

Primarky type de clé: Sélectionnez Primark colonne clé (s) colonne clé primaire: « Votre colonne » primaire colonne clé: (Je n'ai rien à entrer ici) Source clé primaire type: ' Trigger existant '(Cela semblait permettre à la colonne Identité de faire quelque chose sur la table/le formulaire sur lequel je travaillais.). J'avais rencontré le même problème avec je changerais cela en 'Existing Sequence'.

Si vous avez déjà compris cela, j'aimerais connaître les détails.

Plus la lecture est nécessaire, mais il est quelque chose ...

0

Les éléments suivants ont résolu le problème d'insertion ORA-32796 pour moi avec éditable Grille interactive. Je suppose que la même chose fonctionne pour les formes tabulaires.

  1. Aller à Concepteur de page pour la page en question.
  2. Cliquez sur "Traitement", ou cliquez sur "Vue des composants", puis cliquez sur le processus sous "Traitement de la page". Pour la grille interactive modifiable, il s'agit du processus "Enregistrer les données de grille interactives".
  3. Cliquez sur "Oui" dans la section "Renvoyer les clés primaires après insertion" dans les propriétés.
  4. Cliquez sur enregistrer/exécuter.