MySQL - Agregar una función en modelo Workbench

 
Vista:
sin imagen de perfil
Val: 3
Ha aumentado su posición en 23 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Agregar una función en modelo Workbench

Publicado por Cristóbal (2 intervenciones) el 10/04/2019 19:07:13
Estimados, tengan un buen día

He diseñado siempre bases de datos en SQL Server usando VIsual Studio, hoy empece a crear mi primera base de datos en MySQL con Workbench.

El tema es que estoy diseñando un modelo de base de datos, entendí los diagramas, he creado tablas con relaciones y vista, hasta ahí todo bien. lo que me falta ahora es poder crear una función y poder validar el insert de un registro con esa función en un campo x.

este es un ejemplo de como lo hago en Visual studio, y es lo que necesito replicar en mysql

1
2
3
4
5
6
7
8
9
10
11
12
CREATE FUNCTION dbo.fn_ValidaArticulosInventario_CodigoBarraCaja
(
	@CodigoBarraCaja VARCHAR(100),
	@IdEmpresa VARCHAR(10)
)
RETURNS BIT
AS
BEGIN
	IF EXISTS(SELECT 1 FROM dbo.tb_ArticulosInventario a WHERE a.CodigoBarraCaja = @CodigoBarraCaja AND a.IdEmpresa = @IdEmpresa)
		RETURN 0
		RETURN 1
END

y la agrego en la tabla articulos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
CREATE TABLE dbo.tb_In_Articulos
(
	IdArticulo VARCHAR(10) NOT NULL,
	IdEmpresa VARCHAR(10) NOT NULL,
	DescTecnica VARCHAR(255) NOT NULL,
	DescComercial VARCHAR(255) NOT NULL,
	DescOrdenCompra VARCHAR(255) NOT NULL,
	DescFactura VARCHAR(255) NOT NULL,
	IdMonedaVenta VARCHAR(3) NULL,
	IdMarca VARCHAR(5) NULL,
	IdAgrupacionArticulo VARCHAR(3) NULL,
	IdUnidadMedidaCompra VARCHAR(3),
	IdUnidadMedidaVenta VARCHAR(3),
	FactorEquivalenciaUnidadMedidaVenta DECIMAL(15,3) NOT NULL CONSTRAINT DF_Articulos_FactorEquivalenciaUnidadMedidaVenta DEFAULT 1,
	MateriaPrima BIT NOT NULL,
	ProductoTerminado BIT NOT NULL,
	Repuesto BIT NOT NULL,
	MultiploCompra DECIMAL (15,3),
	ParaVenta BIT NOT NULL CONSTRAINT DF_Articulos_ParaVenta DEFAULT 1,
	ParaCompra BIT NOT NULL CONSTRAINT DF_Articulos_ParaCompra DEFAULT 1,
	Activo BIT NOT NULL CONSTRAINT DF_Articulos_Activo DEFAULT 1,
	EsInventariable BIT NOT NULL CONSTRAINT DF_Articulos_EsInventariable DEFAULT 1,
	NumeroParte VARCHAR(255) NULL,
	CostoUnitario DECIMAL (15,3) NOT NULL CONSTRAINT DF_Articulos_Costo DEFAULT 0,
	PrecioUnitarioVentaNeto DECIMAL (15,3) NOT NULL CONSTRAINT DF_Articulos_PrecioVentaNeto DEFAULT 0,
	PrecioUnitarioVentaConImpuesto DECIMAL (15,3) NOT NULL CONSTRAINT DF_Articulos_PrecioVentaConImpuesto DEFAULT 0,
	TieneImpuesto BIT NOT NULL CONSTRAINT DF_Articulos_TieneImpuesto DEFAULT 1,
	ImpuestoEspecifico FLOAT NOT NULL CONSTRAINT DF_Articulos_ImpuestoEspecifico DEFAULT 0,
	Margen FLOAT NOT NULL CONSTRAINT DF_Articulos_Margen DEFAULT 0,
	IdEntidadProveedor VARCHAR(10) NULL,
	IdArticuloERP VARCHAR(20) NULL,
	EtiquetaInformacionNutricional BIT CONSTRAINT DF_Articulos_EtiquetaInformacionNutricional DEFAULT 0,
	Receta BIT CONSTRAINT DF_Articulos_Receta DEFAULT 0,
	FechaCreacion DATETIME NOT NULL CONSTRAINT DF_Articulos_FechaCreacion DEFAULT GETDATE(),
	FechaModificacion DATETIME NOT NULL CONSTRAINT DF_Articulos_FechaModificacion DEFAULT GETDATE(),
	IdUsuarioCreacion VARCHAR(50) NOT NULL,
	IdUsuarioModificacion VARCHAR(50) NOT NULL,
 
    CONSTRAINT PF_Articulos PRIMARY KEY CLUSTERED (IdArticulo ASC, IdEmpresa ASC),
	CONSTRAINT FK_Articulos_Empresa FOREIGN KEY (IdEmpresa) REFERENCES dbo.tb_Ge_Empresas (IdEmpresa),
	CONSTRAINT FK_Articulos_MonedaVenta FOREIGN KEY (IdEmpresa, IdMonedaVenta ) REFERENCES dbo.tb_Ge_EmpresasMonedas (IdEmpresa, IdMoneda),
	CONSTRAINT FK_Articulos_Marca FOREIGN KEY (IdMarca, IdEmpresa ) REFERENCES dbo.tb_Ge_Marcas (IdMarca, IdEmpresa),
	CONSTRAINT FK_Articulos_AgrupacionArticulo FOREIGN KEY (IdAgrupacionArticulo, IdEmpresa) REFERENCES dbo.tb_In_AgrupacionesArticulos (IdAgrupacionArticulo, IdEmpresa),
	CONSTRAINT FK_Articulos_UnidadMedidaCompra FOREIGN KEY (IdUnidadMedidaCompra, IdEmpresa) REFERENCES dbo.tb_In_UnidadesMedidaArticulos (IdUnidadMedidaArticulo, IdEmpresa),
	CONSTRAINT FK_Articulos_UnidadMedidaVenta FOREIGN KEY (IdUnidadMedidaVenta, IdEmpresa) REFERENCES dbo.tb_In_UnidadesMedidaArticulos (IdUnidadMedidaArticulo, IdEmpresa),
	CONSTRAINT FK_Articulos_Proveedor FOREIGN KEY (IdEntidadProveedor, IdEmpresa) REFERENCES dbo.tb_Ge_Entidades (IdEntidad, IdEmpresa),
	CONSTRAINT FK_Articulos_UsuarioCreacion FOREIGN KEY (IdUsuarioCreacion, IdEmpresa) REFERENCES dbo.tb_Ge_UsuariosEmpresa (IdUsuario, IdEmpresa),
	CONSTRAINT FK_Articulos_UsuarioModificacion FOREIGN KEY (IdUsuarioModificacion, IdEmpresa) REFERENCES dbo.tb_Ge_UsuariosEmpresa (IdUsuario, IdEmpresa),
	CONSTRAINT IX_Articulos_DescripcionTecnica UNIQUE (IdEmpresa, DescTecnica),
	CONSTRAINT IX_Articulos_DescripcionComercial UNIQUE (IdEmpresa, DescComercial),
	CONSTRAINT IX_Articulos_DescripcionOrdenCompra UNIQUE (IdEmpresa, DescOrdenCompra),
	CONSTRAINT IX_Articulos_DescripcionFactura UNIQUE (IdEmpresa, DescFactura),
	CONSTRAINT IX_Articulos_NumeroParte CHECK (dbo.fn_In_ValidaArticulos_NumeroParte(tb_In_Articulos.NumeroParte,tb_In_Articulos.IdEmpresa)=1),
	CONSTRAINT IX_Articulos_Margen CHECK (tb_In_Articulos.Margen >=0),
	CONSTRAINT IX_Articulos_ImpuestoEspecificio CHECK (tb_In_Articulos.ImpuestoEspecifico >=0),
)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vega
Val: 69
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Agregar una función en modelo Workbench

Publicado por Vega (30 intervenciones) el 10/04/2019 22:04:44
esto lo he hecho siempre yo con un trigger porque el check no funciona en mysql, hay que emular el check con un trigger. :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar