Es necesario q 1tabla tenga CP pa modificarla?

Buenas. Quisiera saber si esto es cierto. Me estuve fijando que si desde
visual basic intento agregar/borrar/modificar un registro de una tabla
de sql server que no tiene CP, no puedo. Si a esa misma tabla le doy una CP,
ya puedo realizar todas las operaciones de modificación de datos que quiera.
En access se podía tener una tabla sin clave primaria y modificar datos sin
problema alguno, ¿por qué no sucede esto mismo en sql server? ¿Estoy en lo cierto?
¿Y por qué un tipo de dato bit no puede formar parte de la clave primaria de una
tabla de sql server?
Un saludo

1 respuesta

Respuesta
1
Vamos a ver, cuando enlazas a un control data o a access una tabla de sqlserver, por detrás access acaba construyendo instrucciones t-sql para acceder al sql, al no tener clave primaria no sabe que poner en el where. Eso no es en sí una limitación del Sql-server sino del cliente (access en este caso). Un dato bit (al menos en SS2000) si puede formar parte de la clave, he preparado unos scripts que ayudan a entender todo esto que estamos comentando.
Create table a (id int, id2 int)
Go
insert into a values (1,2)
insert into a values (1,3)
insert into a values (1,2)
go
begin tran
update a set id2=4 where id=1 and id2=2
select * from a
rollback
-- aparecen modificados los dos
go
set rowcount 1
begin tran
update a set id2=4 where id=1 and id2=2
set rowcount 0
select * from a
rollback
go
create table b (id int not null ,b bit not null ,otro int, constraint pk_kk primary key (id,b) )
go
create table c (id int not null ,b bit not null ,otro int, constraint pk_kk2 primary key (b) )
Espero que te sirva.
Miguel Egea
http://www.portalsql.com
SQL-SERVER MVP.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas