SQL Server 2000

10/10/2007 - 23:54 por h_alvarez21 | Informe spam
Buenas, estoy trabajando con SQL Server 2000, y tengo una tabla que se llama
X, dentro de esta hay un campo que se llama IdOperacion, este campo debe ser
unico, pero tambien puede quedar en blanco, asi que se puede dar la situacion
que varios registro tengan este campo en blanco. Me dijeron que talvez con
trigger esto se pueda hacer, pero la verdad nunca he trabajado con estos
hasta ahora, si alguien me pudiera ayudar a hacerlo se los agrdeceria
mucho... o si me pudieran decir alguna otra forma, tamb se los agradeceria
mucho.

Gracias!!!!!!!

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
11/10/2007 - 01:52 | Informe spam
h_alvarez21,

- Crees que nos puedas decir de que tipo es esa columna?
- A que te refieres por "puede quedar en blance", te estaras refiriendo a
que lla columna contenga valor NULL?
- Tiene esa tabla una clave primaria?

Como vez, la informacion que nos proporcionastes no es suficiente como para
poder darte un consejo.

AMB



"h_alvarez21" wrote:

Buenas, estoy trabajando con SQL Server 2000, y tengo una tabla que se llama
X, dentro de esta hay un campo que se llama IdOperacion, este campo debe ser
unico, pero tambien puede quedar en blanco, asi que se puede dar la situacion
que varios registro tengan este campo en blanco. Me dijeron que talvez con
trigger esto se pueda hacer, pero la verdad nunca he trabajado con estos
hasta ahora, si alguien me pudiera ayudar a hacerlo se los agrdeceria
mucho... o si me pudieran decir alguna otra forma, tamb se los agradeceria
mucho.

Gracias!!!!!!!
Respuesta Responder a este mensaje
#2 h_alvarez21
11/10/2007 - 18:12 | Informe spam
Gracias por atender la consulta, la situacion es la siguiente... tengo una
tabla que almacena la info de solicitudes de prestamos, entonces en la tabla
existen dos campos, NroSolicitud y el idOperacion (nvarchar de 25)... como
el primer paso para
dar un prestamo es hacer la solicutd, entonce en el campo NroSolicitud se
coloca un consecutivo y el campos idOperacion debe estar en blanco (no en
nulo), o sea lo que se graba es un espacio en blanco... Luego cuando ya se
aprueba la solicitud, ya pasa a ser un prestamo, entonces el campo
idOperacion toma el valor de otro consecutivo que esta determinado para los
prestamos... por eso este campo debe ser unico, pero al mismo tiempo debe
aceptar blancos. Espero haberme dado a entender y gracias por su tiempo.



"Alejandro Mesa" wrote:

h_alvarez21,

- Crees que nos puedas decir de que tipo es esa columna?
- A que te refieres por "puede quedar en blance", te estaras refiriendo a
que lla columna contenga valor NULL?
- Tiene esa tabla una clave primaria?

Como vez, la informacion que nos proporcionastes no es suficiente como para
poder darte un consejo.

AMB



"h_alvarez21" wrote:

> Buenas, estoy trabajando con SQL Server 2000, y tengo una tabla que se llama
> X, dentro de esta hay un campo que se llama IdOperacion, este campo debe ser
> unico, pero tambien puede quedar en blanco, asi que se puede dar la situacion
> que varios registro tengan este campo en blanco. Me dijeron que talvez con
> trigger esto se pueda hacer, pero la verdad nunca he trabajado con estos
> hasta ahora, si alguien me pudiera ayudar a hacerlo se los agrdeceria
> mucho... o si me pudieran decir alguna otra forma, tamb se los agradeceria
> mucho.
>
> Gracias!!!!!!!
Respuesta Responder a este mensaje
#3 Alejandro Mesa
12/10/2007 - 01:45 | Informe spam
h_alvarez21,

Cual es le objetivo detras de insertar in espacio en blanco, en vez de
insertar NULL?

De todas maneras te comento que puedes lograr lo que deseas de las sgtes
formas:

1 - Menos recomendada

Crea una vista solo de las filas donde [idOperacion] no es igual a un
espacio en blanco y crea un indice unique por esa columna (en la vista). La
vista debe creace con la opcion "with schemabinding".

CREATE TABLE dbo.t1 (
NroSolicitud INT NOT NULL IDENTITY PRIMARY KEY,
idOperacion VARCHAR(25) NOT NULL DEFAULT (' ')
)
GO

CREATE VIEW dbo.vw_t1
WITH SCHEMABINDING
AS
SELECT idOperacion
FROM dbo.[t1]
WHERE idOperacion != ' '
GO

CREATE UNIQUE CLUSTERED INDEX vw_t1_idOperacion_u_c_ix
ON dbo.vw_t1(idOperacion)
GO

INSERT INTO dbo.t1 DEFAULT VALUES
INSERT INTO dbo.t1 DEFAULT VALUES
GO

SELECT * FROM dbo.[t1]
GO

UPDATE dbo.[t1]
SET idOperacion = '1'
WHERE NroSolicitud = 1
GO

SELECT * FROM dbo.[t1]
GO

SELECT * FROM dbo.[vw_t1]
GO

UPDATE dbo.[t1]
SET idOperacion = '1'
WHERE NroSolicitud = 2
GO

SELECT * FROM dbo.[t1]
GO

DROP view dbo.vw_t1
GO

DROP TABLE dbo.[t1]
GO


2 - Usar una columna calculada que tome el valor de la clave primaria cuando
el valor de la columna [idOperacion] = ' ' o el valor de la columna
[idOperacion] cuando esta es != ' '. Esta solucion creo que fue sugerida por
Steve Kass.

CREATE TABLE dbo.t1 (
NroSolicitud INT NOT NULL IDENTITY PRIMARY KEY,
idOperacion VARCHAR(25) NOT NULL DEFAULT (' '),
nullbuster AS CASE WHEN idOperacion = ' ' THEN NroSolicitud ELSE idOperacion
END UNIQUE
)
GO

INSERT INTO dbo.t1 DEFAULT VALUES
INSERT INTO dbo.t1 DEFAULT VALUES
GO

SELECT * FROM dbo.[t1]
GO

UPDATE dbo.[t1]
SET idOperacion = 1
WHERE NroSolicitud = 1
GO

SELECT * FROM dbo.[t1]
GO

UPDATE dbo.[t1]
SET idOperacion = 1
WHERE NroSolicitud = 2
GO

SELECT * FROM dbo.[t1]
GO

DROP TABLE dbo.[t1]
GO


AMB


"h_alvarez21" wrote:

Gracias por atender la consulta, la situacion es la siguiente... tengo una
tabla que almacena la info de solicitudes de prestamos, entonces en la tabla
existen dos campos, NroSolicitud y el idOperacion (nvarchar de 25)... como
el primer paso para
dar un prestamo es hacer la solicutd, entonce en el campo NroSolicitud se
coloca un consecutivo y el campos idOperacion debe estar en blanco (no en
nulo), o sea lo que se graba es un espacio en blanco... Luego cuando ya se
aprueba la solicitud, ya pasa a ser un prestamo, entonces el campo
idOperacion toma el valor de otro consecutivo que esta determinado para los
prestamos... por eso este campo debe ser unico, pero al mismo tiempo debe
aceptar blancos. Espero haberme dado a entender y gracias por su tiempo.



"Alejandro Mesa" wrote:

> h_alvarez21,
>
> - Crees que nos puedas decir de que tipo es esa columna?
> - A que te refieres por "puede quedar en blance", te estaras refiriendo a
> que lla columna contenga valor NULL?
> - Tiene esa tabla una clave primaria?
>
> Como vez, la informacion que nos proporcionastes no es suficiente como para
> poder darte un consejo.
>
> AMB
>
>
>
> "h_alvarez21" wrote:
>
> > Buenas, estoy trabajando con SQL Server 2000, y tengo una tabla que se llama
> > X, dentro de esta hay un campo que se llama IdOperacion, este campo debe ser
> > unico, pero tambien puede quedar en blanco, asi que se puede dar la situacion
> > que varios registro tengan este campo en blanco. Me dijeron que talvez con
> > trigger esto se pueda hacer, pero la verdad nunca he trabajado con estos
> > hasta ahora, si alguien me pudiera ayudar a hacerlo se los agrdeceria
> > mucho... o si me pudieran decir alguna otra forma, tamb se los agradeceria
> > mucho.
> >
> > Gracias!!!!!!!
Respuesta Responder a este mensaje
#4 Carlos M. Calvelo
12/10/2007 - 14:38 | Informe spam
On 11 okt, 18:12, h_alvarez21
wrote:
Gracias por atender la consulta, la situacion es la siguiente... tengo una
tabla que almacena la info de solicitudes de prestamos, entonces en la tabla
existen dos campos, NroSolicitud y el idOperacion (nvarchar de 25)... como
el primer paso para
dar un prestamo es hacer la solicutd, entonce en el campo NroSolicitud se
coloca un consecutivo y el campos idOperacion debe estar en blanco (no en
nulo), o sea lo que se graba es un espacio en blanco... Luego cuando ya se
aprueba la solicitud, ya pasa a ser un prestamo, entonces el campo
idOperacion toma el valor de otro consecutivo que esta determinado para los
prestamos... por eso este campo debe ser unico, pero al mismo tiempo debe
aceptar blancos. Espero haberme dado a entender y gracias por su tiempo.





Otra alternativa a lo propuesto por Alejando.

Solucitudes y Prestamos me parecen entidades distintas.
Yo eliminaría el campo idOperancion de esa tabla
y crearía una nueva tabla (Prestamos) con attributos
NroSolicitud y idOperación. Los dos serían unique, not null;
vamos.. dos claves, aunque puedas tener tus preferencias
en cuanto a cual tiene que ser la clave primaria.

Adiós null o blanco. Todas las solicitudes introducidas
en la tabla Prestamos son, pues eso préstamos.

Saludos,
Carlos
Respuesta Responder a este mensaje
#5 h_alvarez21
12/10/2007 - 18:31 | Informe spam
Muchas gracias por la ayuda, me fue muy util Gracias!!!!

"h_alvarez21" wrote:

Buenas, estoy trabajando con SQL Server 2000, y tengo una tabla que se llama
X, dentro de esta hay un campo que se llama IdOperacion, este campo debe ser
unico, pero tambien puede quedar en blanco, asi que se puede dar la situacion
que varios registro tengan este campo en blanco. Me dijeron que talvez con
trigger esto se pueda hacer, pero la verdad nunca he trabajado con estos
hasta ahora, si alguien me pudiera ayudar a hacerlo se los agrdeceria
mucho... o si me pudieran decir alguna otra forma, tamb se los agradeceria
mucho.

Gracias!!!!!!!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida