2010-08-16 50 views
15

Estoy usando Microsoft SQL Server 2005, y soy relativamente nuevo en SQL en general.Error del servidor SQL: "%" no es una restricción. No se pudo eliminar la restricción. Ver errores anteriores

Existe una relación entre dos tablas, "Recursos" y "Recursos grupales", en la base de datos "Información". Recursos tiene una clave externa, "id", en Group_Resources, llamada "resource_id". Existe una restricción de clave externa, "fk_gr_res_resources", entre los dos.

Establecido como el propietario de la base de datos y tengo permisos completos de lectura/escritura/creación/eliminación.

que desea eliminar la restricción de clave externa, por lo que ejecuta la siguiente consulta:

ALTER TABLE [Information].[group_resources] DROP CONSTRAINT fk_gr_res_resources 

y recibió el siguiente error:

'fk_gr_res_resources' is not a constraint. Could not drop constraint. See previous errors.

Estoy confundido, porque es una restricción y no hay errores de ortografía ¿Voy a eliminar esto incorrectamente? ¿Estoy eliminando la restricción de la tabla incorrecta? Cualquier sugerencia sería muy apreciada, & por favor no me llame: soy nuevo en SQL después de todo.

+2

¿Ha intentado eliminar la restricción de la otra tabla? Eso respondería a su pregunta sobre si lo está eliminando del lugar correcto. – SqlRyan

+0

Sí, he intentado eliminar la restricción de "gropus_resources" y "resources". Todavía recibo el mismo error. Gracias por la sugerencia. – amanda

Respuesta

21

que está recibiendo este error:

Msg 3728, Level 16, State 1, Line 1 
'fk_gr_res_resources' is not a constraint. 
Msg 3727, Level 16, State 0, Line 1 
Could not drop constraint. See previous errors. 

Debido a la restricción FK no existe!

¿Estas seguro queInformationes el nombre de esquema derecho y nodbo?

1. Esta SQL demostrará que el FK no existe:

SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources' 

2. Vaya, me equivoqué en mi respuesta original, aquí es la sintaxis correcta para SQL Server:

ALTER TABLE <table_name> 
DROP CONSTRAINT <foreignkey_name> 

3. Ejemplo de su base de datos:

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources') 
BEGIN 
    ALTER TABLE Group_Resources 
    DROP CONSTRAINT fk_gr_res_resources 
END; 

4. Trate de ejecutar este:

IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources') 
BEGIN 
    ALTER TABLE Group_Resources 
    ADD CONSTRAINT fk_gr_res_resources 
    FOREIGN KEY (resource_id) 
    REFERENCES Resources(id) /* make sure Resources.id is a PRIMARY KEY */ 
END; 

5. A continuación, intente esto y ver si usted todavía consigue que el error:

ALTER TABLE Group_Resources 
DROP CONSTRAINT fk_gr_res_resources 

El otro era la sintaxis de MySQL, perdón:

ALTER TABLE <table_name> 
DROP FOREIGN KEY <foreignkey_name> 

Gracias por corregirme OMG Ponies!

+0

Gracias por el ejemplo de código. Pongo en lo siguiente: "ALTER TABLE DROP FOREIGN KEY " y se la dio este error: "sintaxis incorrecta cerca de la palabra clave 'extraños'." Lo mismo ocurre con el segundo ejemplo. (todo está escrito correctamente, por cierto, así que no estoy seguro de por qué sigo recibiendo errores: la sintaxis parece correcta.) – amanda

+0

@OMG Ponies: gracias por señalar mi error, y no votar a la baja tampoco! – JohnB

+0

Esta respuesta resolvió mi problema :) @JohnB & @OMG Ponies: ¡Muchas gracias a todos por sus sugerencias! – amanda

Cuestiones relacionadas