Stock con vista indexada

27/05/2007 - 02:15 por principiante | Informe spam
Tengo una tabla de movimientos de articulos:

movimientos (codart, fecha, cantidad,...)

y una vista indexada (por codart):

vexistencias (select codart, sum(cantidad) as existencia, count_big(*) as
cnt from movimientos group by codart)


Pero necesito controlar que nunca me quede una existencia negativa. Estoy
pensando en triggers pero no logro como implementarlo y donde..

Tambien pienso en una restriccion check pero tampoco lo entiendo bien.


Que opciones tengo para lograr eso?


Gracias

Jose TH

Preguntas similare

Leer las respuestas

#1 Maxi
27/05/2007 - 18:50 | Informe spam
Hola, habria que ver mas datos para poderte ayudar, porque no disponemos de
las sentencias DDL como para saber el modelo.

De todas maneras, el check y el trigger son validos, para el trigger revisa
en tus libros on line el comando CREATE TRIGGER y el check lo podrias usar
con una funcion que verifique si el stock sera o no negativo


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"principiante" escribió en el mensaje
news:%230WjxQ$
Tengo una tabla de movimientos de articulos:

movimientos (codart, fecha, cantidad,...)

y una vista indexada (por codart):

vexistencias (select codart, sum(cantidad) as existencia, count_big(*) as
cnt from movimientos group by codart)


Pero necesito controlar que nunca me quede una existencia negativa. Estoy
pensando en triggers pero no logro como implementarlo y donde..

Tambien pienso en una restriccion check pero tampoco lo entiendo bien.


Que opciones tengo para lograr eso?


Gracias

Jose TH

Respuesta Responder a este mensaje
#2 principiante
27/05/2007 - 21:48 | Informe spam
A una vista indexada se le puede aplicar una restriccion check ?
Es que estoy usando el SQL 2000 (Enterprise manager) y no veo donde
ponersela similar a como se le pone a las tablas normales.

gracias


"Maxi" wrote in message
news:%
Hola, habria que ver mas datos para poderte ayudar, porque no disponemos
de las sentencias DDL como para saber el modelo.

De todas maneras, el check y el trigger son validos, para el trigger
revisa en tus libros on line el comando CREATE TRIGGER y el check lo
podrias usar con una funcion que verifique si el stock sera o no negativo


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"principiante" escribió en el mensaje
news:%230WjxQ$
Tengo una tabla de movimientos de articulos:

movimientos (codart, fecha, cantidad,...)

y una vista indexada (por codart):

vexistencias (select codart, sum(cantidad) as existencia, count_big(*) as
cnt from movimientos group by codart)


Pero necesito controlar que nunca me quede una existencia negativa.
Estoy pensando en triggers pero no logro como implementarlo y donde..

Tambien pienso en una restriccion check pero tampoco lo entiendo bien.


Que opciones tengo para lograr eso?


Gracias

Jose TH





Respuesta Responder a este mensaje
#3 Maxi
27/05/2007 - 22:27 | Informe spam
No


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"principiante" escribió en el mensaje
news:%

A una vista indexada se le puede aplicar una restriccion check ?
Es que estoy usando el SQL 2000 (Enterprise manager) y no veo donde
ponersela similar a como se le pone a las tablas normales.

gracias


"Maxi" wrote in message
news:%
Hola, habria que ver mas datos para poderte ayudar, porque no disponemos
de las sentencias DDL como para saber el modelo.

De todas maneras, el check y el trigger son validos, para el trigger
revisa en tus libros on line el comando CREATE TRIGGER y el check lo
podrias usar con una funcion que verifique si el stock sera o no negativo


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"principiante" escribió en el mensaje
news:%230WjxQ$
Tengo una tabla de movimientos de articulos:

movimientos (codart, fecha, cantidad,...)

y una vista indexada (por codart):

vexistencias (select codart, sum(cantidad) as existencia, count_big(*)
as cnt from movimientos group by codart)


Pero necesito controlar que nunca me quede una existencia negativa.
Estoy pensando en triggers pero no logro como implementarlo y donde..

Tambien pienso en una restriccion check pero tampoco lo entiendo bien.


Que opciones tengo para lograr eso?


Gracias

Jose TH









Respuesta Responder a este mensaje
#4 Jesús López
28/05/2007 - 09:27 | Informe spam
Supongamos que la tabla es esta:

CREATE TABLE movimientos (
IdMovimiento int IDENTITY(1,1) PRIMARY KEY,
CodArticulo int NOT NULL,
Fecha smalldatetime NOT NULL DEFAULT GETDATE(),
Cantidad int NOT NULL
)
GO


CREATE VIEW vExistencias WITH SCHEMABINDING
AS
SELECT CodArticulo, SUM(cantidad) AS Existencias, COUNT_BIG(*) AS Cuenta
FROM dbo.movimientos
GROUP BY CodArticulo

GO
CREATE UNIQUE CLUSTERED INDEX UK_vExistencias ON vExistencias(CodArticulo)

GO


negativas

CREATE TRIGGER Movimientos_Insert ON movimientos FOR INSERT
AS
BEGIN
IF EXISTS( SELECT *
FROM inserted i JOIN vExistencias V WITH(NOEXPAND)
ON i.CodArticulo = V.CodArticulo
WHERE v.Existencias < 0)
BEGIN
RAISERROR('Las existencias no pueden ser negativas', 16, -1, -1)
ROLLBACK
END
END
GO

fallan

INSERT INTO movimientos(CodArticulo, Cantidad) VALUES(1,10)
INSERT INTO movimientos(CodArticulo, Cantidad) VALUES(1,10)
INSERT INTO movimientos(CodArticulo, Cantidad) VALUES(1,-10)
INSERT INTO movimientos(CodArticulo, Cantidad) VALUES(1,-10)
INSERT INTO movimientos(CodArticulo, Cantidad) VALUES(1,-10)




(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

Msg 50000, Level 16, State 1, Procedure Movimientos_Insert, Line 9
Las existencias no pueden ser negativas


Saludos:


Jesús López
www.solidq.com



"principiante" escribió en el mensaje
news:%230WjxQ$
Tengo una tabla de movimientos de articulos:

movimientos (codart, fecha, cantidad,...)

y una vista indexada (por codart):

vexistencias (select codart, sum(cantidad) as existencia, count_big(*) as
cnt from movimientos group by codart)


Pero necesito controlar que nunca me quede una existencia negativa. Estoy
pensando en triggers pero no logro como implementarlo y donde..

Tambien pienso en una restriccion check pero tampoco lo entiendo bien.


Que opciones tengo para lograr eso?


Gracias

Jose TH

Respuesta Responder a este mensaje
#5 Alfredo Novoa
28/05/2007 - 12:24 | Informe spam
On Sun, 27 May 2007 17:27:06 -0300, "Maxi"
wrote:

No



Pues vaya m...
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida