Que tal amigos, existe alguna forma de eliminar una llave primaria sin saber el nombre de antemano?
Saludos.

drop primary key sin saber el nombre
Started by
Pratasvenska
, Dec 12 2011 04:14 AM
2 replies to this topic
#1
Posted 12 December 2011 - 04:14 AM
#2
Posted 12 December 2011 - 08:56 AM
Todos los motores SQL, por tener que cumplir el estandar, han de ser capaces de darte la estructura completa de las tablas de una base de datos usando querys en SQL normales, solo que en cada motor la sintaxis es distinta.
En SQL Server tienes las definiciones que necesitas aqui: http://msdn.microsof...y/ms173810.aspx
Otra cosa es que te permita hacerle un drop, normalmente esas columnas estan asociada a indices, relaciones con otras tablas, etc., y sin romper antes todas esas relaciones, te dirá educadamente que no pudo hacerle drop por violarse esas relaciones, que por cierto están definidas en las mismas tablas que antes.
En SQL Server tienes las definiciones que necesitas aqui: http://msdn.microsof...y/ms173810.aspx
Otra cosa es que te permita hacerle un drop, normalmente esas columnas estan asociada a indices, relaciones con otras tablas, etc., y sin romper antes todas esas relaciones, te dirá educadamente que no pudo hacerle drop por violarse esas relaciones, que por cierto están definidas en las mismas tablas que antes.
#3
Posted 13 December 2011 - 02:39 AM
Es una tabla en la que yo mismo he creado las relaciones y de la cual conozco muy bien la estructura. Puedo hacer un drop constraint perfectamente:
El problema es en mi empresa tenemos un "model editor" (un programita que se han creado aqui para crear automaticamente las tablas). Por lo tanto no puedo saber el nombre que les asigna a las llaves primarias a menos que lo vea manualmente con un query. Ahora, desde delphi necesito modificar dichas llaves primarias.
En resumen, la estructura no es el problema. A fin de cuentas, lo encontré por ahi en internet.
saludos
ALTER TABLE Tabla
DROP CONSTRAINT PK_Tabla_Col1
El problema es en mi empresa tenemos un "model editor" (un programita que se han creado aqui para crear automaticamente las tablas). Por lo tanto no puedo saber el nombre que les asigna a las llaves primarias a menos que lo vea manualmente con un query. Ahora, desde delphi necesito modificar dichas llaves primarias.
En resumen, la estructura no es el problema. A fin de cuentas, lo encontré por ahi en internet.
CREATE TABLE PKTest ( ID INT PRIMARY KEY ) ;
DECLARE @SQL VARCHAR(4000)
SET @SQL = 'ALTER TABLE PKTEST DROP CONSTRAINT |ConstraintName| '
SET @SQL = REPLACE(@SQL, '|ConstraintName|', ( SELECT name
FROM sysobjects
WHERE xtype = 'PK'
AND parent_obj = OBJECT_ID('PKTest')
))
EXEC (@SQL)
DROP TABLE PKTest
saludos