Principales respuestas
Msg 5074, Level 16, State 1, Line 1

Pregunta
-
Hola foro que tal, bueno una consulta.
estoy tratando de cambiar el tipo de un campo de not null a null
esta es la tabla
CREATE TABLE Averia
(
num_averia int NOT NULL ,
num_serie int NOT NULL ,
id_usuario varchar(8) NOT NULL ,
problema varchar(40) NOT NULL ,
solucion varchar(70) NOT NULL ,
hora_problema int NULL ,
hora_solucion int NULL ,
id_proveedor varchar(8) NOT NULL ,
nom_empresa varchar(40) NOT NULL ,
nom_area varchar(20) NOT NULL ,
nom_sucursal varchar(30) NOT NULL ,
nom_compañia varchar(30) NOT NULL ,
visible int NULL
)
goelc ampo que quiero cambiar es 'id_proveedor'
estoy utilizando esto:
alter table Averia alter column id_proveedor varchar(8)
gopero me manda este error:
Msg 5074, Level 16, State 1, Line 1
The object 'XPKAveria' is dependent on column 'id_proveedor'.
Msg 4922, Level 16, State 9, Line 1
ALTER TABLE ALTER COLUMN id_proveedor failed because one or more objects access this column.agradeceria si em pueden ayudar, ya que en mi aplicativo no puedo insertar una consulta por que me bota que 'id_proveedor ' esta como not null, por esoe s que quiero cambiarlo a null...
de antemano gracias..
Respuestas
-
Busca en la tabla sys.objects que tipo de objeto esta referenciando esa columna. Pudiera ser que esa columna forme parte de la clave primaria, en cuyo caso no podras cambiar la columna para que acepte la marca NULL, pues es parte de los requerimientos de una clave primaria.
Aqui un ejemplo que reproduce el error.
USE tempdb; GO CREATE TABLE dbo.T1 ( c1 int NOT NULL CONSTRAINT PK_T1 PRIMARY KEY ); GO CREATE TABLE dbo.T2 ( c1 int NOT NULL REFERENCES dbo.T1(c1) ); GO ALTER TABLE dbo.T1 ALTER COLUMN c1 int NULL; GO SELECT * FROM sys.objects WHERE [name] = 'PK_T1'; GO DROP TABLE dbo.T2, dbo.T1; GO /* Msg 5074, Level 16, State 1, Line 1 The object 'PK_T1' is dependent on column 'c1'. Msg 4922, Level 16, State 9, Line 1 ALTER TABLE ALTER COLUMN c1 failed because one or more objects access this column. */
AMB
- Propuesto como respuesta Alberto López Grande (qwalgrande)Moderator viernes, 14 de octubre de 2011 14:50
- Marcado como respuesta jcuroca viernes, 14 de octubre de 2011 16:41
Todas las respuestas
-
Busca en la tabla sys.objects que tipo de objeto esta referenciando esa columna. Pudiera ser que esa columna forme parte de la clave primaria, en cuyo caso no podras cambiar la columna para que acepte la marca NULL, pues es parte de los requerimientos de una clave primaria.
Aqui un ejemplo que reproduce el error.
USE tempdb; GO CREATE TABLE dbo.T1 ( c1 int NOT NULL CONSTRAINT PK_T1 PRIMARY KEY ); GO CREATE TABLE dbo.T2 ( c1 int NOT NULL REFERENCES dbo.T1(c1) ); GO ALTER TABLE dbo.T1 ALTER COLUMN c1 int NULL; GO SELECT * FROM sys.objects WHERE [name] = 'PK_T1'; GO DROP TABLE dbo.T2, dbo.T1; GO /* Msg 5074, Level 16, State 1, Line 1 The object 'PK_T1' is dependent on column 'c1'. Msg 4922, Level 16, State 9, Line 1 ALTER TABLE ALTER COLUMN c1 failed because one or more objects access this column. */
AMB
- Propuesto como respuesta Alberto López Grande (qwalgrande)Moderator viernes, 14 de octubre de 2011 14:50
- Marcado como respuesta jcuroca viernes, 14 de octubre de 2011 16:41
-
Hola Hunchbank gracias por responder.
pues si efectivamente ese campo id_proveedor es una calave primaria en otra tabla en la tabla proveedor, y esta relacionada con esta, pues creo que no se puede cambiar, asi que no queda de otras mas que agregarla en la aplicacion,...
gracias ..