Comment éviter le “Impossible de supprimer à partir de tables spécifiées.” dans MS Access
Voici le code que je suis en train de lancer:
DELETE DISTINCTROW JHALL_REFERAL_ASSIGNMENTS.emp_id, JHALL_REFERAL_ASSIGNMENTS.ref_elem_id
FROM JHALL_REFERAL_ASSIGNMENTS
WHERE (((JHALL_REFERAL_ASSIGNMENTS.emp_id)=(select b.emp_id from JHALL_REFERAL_ELEMENT a, JHALL_REFERAL_ASSIGNMENTS b, BSI_MARTS_D_EMPLOYEE c
where C.FULL_NM = 'Employee'
and A.REF_NAME ='Max Premium of 5,000'
and A.REF_ELEM_ID = B.REF_ELEM_ID
and B.emp_id = C.EMPLOYEE_KEY
)) AND ((JHALL_REFERAL_ASSIGNMENTS.ref_elem_id)=(select a.ref_elem_id from JHALL_REFERAL_ELEMENT a, JHALL_REFERAL_ASSIGNMENTS b, BSI_MARTS_D_EMPLOYEE c
where C.FULL_NM = 'Employee'
and A.REF_NAME ='Max Premium of 5,000'
and A.REF_ELEM_ID = B.REF_ELEM_ID
and B.emp_id = C.EMPLOYEE_KEY
)));
Chaque fois que j'essaie d'exécuter ce dans l'Accès j'obtiens l'erreur 3086, "Impossible de supprimer à partir de tables spécifiées." Lorsque vous essayez de trouver des informations en ligne, j'ai continuer à courir dans les résolutions disant que je doit modifier le registre Unique du champ est à "Oui" qui je l'ai fait mais cela ne résout pas mon problème. J'ai couru le même code (séparation de schéma et les noms de table avec .
au lieu de _
) en Crapaud et il a bien fonctionné.
Est-il une contrainte de clé étrangère ou attaché à l'une de ces lignes?
Le employee_key, emp_id, et ref_elem_id sont des clés primaires. En plus de ceux il n'y a pas de contraintes.
N'importe quel de vos clés primaires des relations?
Non, je n'ai pas spécifier toutes les relations lors de l'élaboration.
Vous devez définir tous les critères de sélection d'une table dérivée (sous-requête) et ensuite utiliser ou NON EN tant que de besoin. Je suis assez sûr que vous ne serez pas en mesure de supprimer cette requête. Donc
Le employee_key, emp_id, et ref_elem_id sont des clés primaires. En plus de ceux il n'y a pas de contraintes.
N'importe quel de vos clés primaires des relations?
Non, je n'ai pas spécifier toutes les relations lors de l'élaboration.
Vous devez définir tous les critères de sélection d'une table dérivée (sous-requête) et ensuite utiliser ou NON EN tant que de besoin. Je suis assez sûr que vous ne serez pas en mesure de supprimer cette requête. Donc
DELETE FROM Table WHERE ID IN (SELECT ..)
OriginalL'auteur user1466887 | 2012-07-09
Vous devez vous connecter pour publier un commentaire.
Depuis votre tableau de la clé primaire est autres je vous conseille de lire ce lien pour réinitialiser. http://support.microsoft.com/kb/812718
J'ai lu l'article alors essayé et n'ai pas de chance :/ j'ai créé un petit tableau à partir de zéro afin que je puisse avoir le contrôle complet tout en essayant de diagnostiquer le problème sans y apporter de la critique tables. J'ai fait une requête simple (EFFACER DE JHALL_TEMP où a = 1;), qui produit la même erreur. J'ai essayé d'ajouter et de retirer les clés primaires et les séquences sur elle ou pas d'effet. Merci beaucoup pour cet article bien qu'il m'a donné une autre région pour enquêter sur!
OriginalL'auteur DrinkJavaCodeJava
J'ai passé en revue plusieurs postes, y compris celui-ci, à se débrouiller un semblable supprimer. J'ai utilisé une requête à distinguer ce qui est un peu complexe critères de sélection vers le bas pour un ensemble de clés primaires de la table ciblée pour la suppression d'un enregistrement.
J'ai eu la "impossible de supprimer à partir de certaines tables d'erreur" et "Spécifier la table contenant les enregistrements que vous souhaitez supprimer" erreur jusqu'à ce que j'ai utilisé:
Cette travaillé dans Access 2013.
Le DISTINCTROW a fait le tour pour moi aussi.
OriginalL'auteur Steve
C'est vraiment exaspérant problème que même le code ci-dessous, cité ci-dessus, les résultats dans un "Impossible de supprimer à partir de tables spécifiées" erreur, si Criteria_Query est en fait une requête et pas de table.
la solution est de choisir d'abord les résultats de
Criteria_Query
dans une table,tbl_Criteria_Query
, et ensuite utiliser le tableau de ladelete
déclaration:J'ai rencontré ce et a dû faire cette étape intermédiaire. Je pense que l'Accès n'aime pas utiliser un non modifiable jeu d'enregistrements dans une JOINTURE sur SUPPRIMER. Une autre alternative, comme décrit ci-dessous, est d'utiliser une sous-sélection dans la clause where de la requête de suppression, mais dans mon expérience, cela a été trop lente pour être utile, une fois le supprimer à partir de la table obtient au-dessus d'une certaine taille (clause where évalué trop de fois)
OriginalL'auteur David J. Heinrich
Sélectionnez l'Id dans une sous-requête et exécutez supprimer sur la table à l'aide de
OriginalL'auteur Bhanu Sinha
Je sais que c'est vieux, mais peut-être que quelqu'un va trouver ce lien utile
La suite a travaillé pour moi
designview->propertysheet->General->set unique records to "yes"
OriginalL'auteur Iron excel
Il suffit d'Exécuter Visual Studio (à Exécuter en tant Qu'Administrateur de la Mode).
OriginalL'auteur Deep Biswas
J'ai eu le même message d'erreur lors de l'utilisation de MS Access frontale et SQL server back-end. J'ai trouvé que si je fais mes clés primaires le même dans SQL comme dans la table locale de l'Accès le problème a été résolu.
OriginalL'auteur Sean