Para SqlAnyWhere:
CREATE TABLE Usuarios(
Usu_Clave VarChar(10) Primary Key Not Null,
Usu_Nombre VarChar(30) Not Null,
Usu_Password VarChar(10) Not Null,
Usu_CamPass Bit Default 1,
Usu_Email VarChar(40) Null);
CREATE TRIGGER TR_Borra_Usuario ON Usuarios
FOR DELETE AS
DELETE MenxUsu
FROM Deleted, MenxUsu
WHERE MenxUsu.Usu_Clave = Deleted.Usu_Clave;
INSERT Usuarios(Usu_Clave,Usu_Nombre,Usu_Password,Usu_CamPass,Usu_Email) VALUES('Admin','Administrador del sistema','pruebas',0,'
[email protected]');
CREATE TABLE MenxUsu(
Usu_Clave VarChar(10) Not Null,
Men_Clave varchar(50) Not Null,
Mxu_Posicion Int Not Null,
CONSTRAINT PK_MenxUsuarios
PRIMARY KEY CLUSTERED (Usu_Clave, Men_Clave),
CONSTRAINT FK_MenxUsu_Usuarios
FOREIGN KEY (Usu_Clave)
REFERENCES Usuarios(Usu_Clave));
CREATE TABLE Pesadas(
Pes_ID BigInt Identity Primary Key,
Ord_ID BigInt Null,
Pes_FecHorPri DateTime Not Null Default GetDate(),
Pes_PesoPri Int Not Null,
Pes_FecHorSeg DateTime Null,
Pes_PesoSeg Int Null,
Pes_Fecha Char(8) Null,
Pes_Bruto Int Null,
Pes_Tara Int Null,
Pes_Neto Int Null,
Pro_ID Int Not Null,
Pro_Nombre VarChar(40) Not Null,
Emp_ID Int Not Null,
Emp_Nombre VarChar(40) Not Null,
Tra_ID Int Not Null,
Tra_Nombre VarChar(40) Not Null,
Pes_Chofer VarChar(35) Not Null,
Pes_Placas VarChar(12) Not Null,
Pes_Completo Bit Default 0,
Pes_Cam1Ent Image Null,
Pes_Cam2Ent Image Null,
Pes_Cam3Ent Image Null,
Pes_Cam1Sal Image Null,
Pes_Cam2Sal Image Null,
Pes_Cam3Sal Image Null,
Pes_BolOffLine BigInt Null, /* Numero de boleto off line dado por el indicador, si vale null el registro no es sincronizado */
CONSTRAINT FK_Pesadas_Productos
FOREIGN KEY (Pro_ID)
REFERENCES Productos(Pro_ID),
CONSTRAINT FK_Pesadas_Empresas
FOREIGN KEY (Emp_ID)
REFERENCES Empresas(Emp_ID),
CONSTRAINT FK_Pesadas_Transportistas
FOREIGN KEY (Tra_ID)
REFERENCES Transportistas(Tra_ID));
CREATE INDEX Pesadas_Fecha ON Pesadas(Pes_Fecha);
CREATE TRIGGER TR_Actualiza_Fecha ON Pesadas
FOR INSERT
AS
BEGIN
DECLARE @Pes_ID BigInt,
@Pes_Fecha Char(8)
SELECT @Pes_ID = Pes_ID, @Pes_Fecha = forfec(Pes_FecHorPri,8,0) FROM Inserted
UPDATE Pesadas
SET Pes_Fecha = @Pes_Fecha
WHERE Pes_ID = @Pes_ID
END;
CREATE TRIGGER TR_Actualiza_Neto ON Pesadas
FOR UPDATE
AS
BEGIN
DECLARE @Pes_ID BigInt,
@Ord_ID BigInt,
@Pes_Bruto Int,
@Pes_Tara Int,
@Pes_PesoPri Int,
@Pes_PesoSeg Int,
@Pes_Completo Bit,
@Pes_FecHora DateTime,
@Pes_FecHorSeg DateTime
IF UPDATE(Pes_Completo)
BEGIN
SELECT @Pes_ID = Pes_ID, @Pes_PesoPri = Pes_PesoPri, @Pes_PesoSeg = Pes_PesoSeg, @Pes_Completo = Pes_Completo, @Pes_FecHorSeg = Pes_FecHorSeg, @Ord_ID = Ord_ID
FROM Inserted
IF @Pes_Completo = 1
BEGIN
/* Son 2 pesadas */
IF @Pes_PesoPri > @Pes_PesoSeg
SELECT @Pes_Bruto = @Pes_PesoPri, @Pes_Tara = @Pes_PesoSeg, @Pes_FecHora = @Pes_FecHorSeg
ELSE
SELECT @Pes_Bruto = @Pes_PesoSeg, @Pes_Tara = @Pes_PesoPri, @Pes_FecHora = @Pes_FecHorSeg
UPDATE Pesadas
SET Pes_Fecha = forfec(@Pes_FecHora,8,0),
Pes_Bruto = @Pes_Bruto,
Pes_Tara = @Pes_Tara,
Pes_Neto = ABS(@Pes_Bruto - @Pes_Tara)
WHERE Pes_ID = @Pes_ID
UPDATE Ordenes
SET Ord_Completo = 1
WHERE Ord_ID = @Ord_ID
END
END
END;