domingo, 27 de septiembre de 2015

SQL - Trigger Update

/*Tanto para INSERT y UPDATE la tabla usada en los TRIGGER es INSERTED. para los delete es DELETED*/
USE [Gestion]
GO
/****** Object:  Trigger [dbo].[upd_requerimientos]    Script Date: 27/09/2015 12:02:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- Create Trigger (New Menu).SQL
  ALTER TRIGGER [dbo].[upd_requerimientos] ON [dbo].[REQUERIMIENTO]
 AFTER UPDATE
 AS
 BEGIN


  DECLARE @id_requerimiento INT
         ,@id_archivo INT

  SELECT @id_requerimiento = ID_REQUERIMIENTO
        ,@id_archivo = ID_ARCHIVO
  FROM inserted

  UPDATE Gestion..REL_REQUERIMIENTO_ARCHIVO
  SET ID_ARCHIVO = @id_archivo
  WHERE ID_REQUERIMIENTO = @id_requerimiento

 END




/************************************************************************/
/*TABLAS AFECTADAS PARA TENER UNA IDEA*/
CREATE TABLE [dbo].[REQUERIMIENTO](
[ID_REQUERIMIENTO] [int] IDENTITY(1,1) NOT NULL,
[ID_PROYECTO] [int] NULL,
[NOMBRE_REQUERIMIENTO] [varchar](max) NULL,
[DESCRIPCION_REQUERIMIIENTO] [varchar](max) NULL,
[TIPO_REQUERIMIENTO] [varchar](50) NULL,
[ESTADO] [tinyint] NULL,
[ID_ARCHIVO] [int] NULL,
 CONSTRAINT [PK_REQUERIMIENTO] PRIMARY KEY CLUSTERED
(
[ID_REQUERIMIENTO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]



CREATE TABLE [dbo].[REL_REQUERIMIENTO_ARCHIVO](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_REQUERIMIENTO] [int] NULL,
[ID_ARCHIVO] [int] NULL,
 CONSTRAINT [PK_REL_REQUERIMIENTO_ARCHIVO] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

SQL - Trigger Insert

USE [Gestion]
GO
/****** Object:  Trigger [dbo].[ins_requerimientos]    Script Date: 27/09/2015 11:56:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- Create Trigger (New Menu).SQL
 ALTER TRIGGER [dbo].[ins_requerimientos]
  on [dbo].[REQUERIMIENTO]
  for  INSERT  --DECLARO QUE ES CUANDO OCURRA UNA INSERCION EN LA TABLA REQUERIMIENTOS
 as
 
  DECLARE @id_requerimiento INT
         ,@id_archivo INT
 
  SELECT @id_requerimiento = ID_REQUERIMIENTO --OBTENGO VALORES DE ENTRADA DESDE LA TABLA INSERTED
        ,@id_archivo = ID_ARCHIVO
  FROM inserted
 
  --Y LOS USO PARA INSERTAR SOBRE UNA SEGUNDA TABLA
  INSERT INTO Gestion..REL_REQUERIMIENTO_ARCHIVO
          ( ID_REQUERIMIENTO, ID_ARCHIVO )
  VALUES  ( @id_requerimiento, -- ID_REQUERIMIENTO - int
            @id_archivo  -- ID_ARCHIVO - int
            )    



/************************************************************************/
/*TABLAS AFECTADAS PARA TENER UNA IDEA*/
CREATE TABLE [dbo].[REQUERIMIENTO](
[ID_REQUERIMIENTO] [int] IDENTITY(1,1) NOT NULL,
[ID_PROYECTO] [int] NULL,
[NOMBRE_REQUERIMIENTO] [varchar](max) NULL,
[DESCRIPCION_REQUERIMIIENTO] [varchar](max) NULL,
[TIPO_REQUERIMIENTO] [varchar](50) NULL,
[ESTADO] [tinyint] NULL,
[ID_ARCHIVO] [int] NULL,
 CONSTRAINT [PK_REQUERIMIENTO] PRIMARY KEY CLUSTERED
(
[ID_REQUERIMIENTO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]



CREATE TABLE [dbo].[REL_REQUERIMIENTO_ARCHIVO](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_REQUERIMIENTO] [int] NULL,
[ID_ARCHIVO] [int] NULL,
 CONSTRAINT [PK_REL_REQUERIMIENTO_ARCHIVO] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

/************************************************************************/

lunes, 7 de septiembre de 2015

SQL - Saber últimas consultas hechas sobre BD y quién.

SELECT s.host_name ,
s.program_name ,
c.session_id ,
c.most_recent_session_id ,
c.connect_time ,
c.net_transport ,
c.protocol_type ,
c.protocol_version ,
c.endpoint_id ,
c.encrypt_option ,
c.auth_scheme ,
c.node_affinity ,
c.num_reads ,
c.num_writes ,
c.last_read ,
c.last_write ,
c.net_packet_size ,
c.client_net_address ,
c.client_tcp_port ,
c.local_net_address ,
c.local_tcp_port ,
c.connection_id ,
c.parent_connection_id ,
c.most_recent_sql_handle ,
s.session_id ,
s.login_time ,
s.host_name ,
s.program_name ,
s.host_process_id ,
s.client_version ,
s.client_interface_name ,
s.security_id ,
s.login_name ,
s.nt_domain ,
s.nt_user_name ,
s.status ,
s.context_info ,
s.cpu_time ,
s.memory_usage ,
s.total_scheduled_time ,
s.total_elapsed_time ,
s.endpoint_id ,
s.last_request_start_time ,
s.last_request_end_time ,
s.reads ,
s.writes ,
s.logical_reads ,
s.is_user_process ,
s.text_size ,
s.language ,
s.date_format ,
s.date_first ,
s.quoted_identifier ,
s.arithabort ,
s.ansi_null_dflt_on ,
s.ansi_defaults ,
s.ansi_warnings ,
s.ansi_padding ,
s.ansi_nulls ,
s.concat_null_yields_null ,
s.transaction_isolation_level ,
s.lock_timeout ,
s.deadlock_priority ,
s.row_count ,
s.prev_error ,
s.original_security_id ,
s.original_login_name ,
s.last_successful_logon ,
s.last_unsuccessful_logon ,
s.unsuccessful_logons ,
s.group_id ,
st.dbid ,
st.objectid ,
st.number ,
st.encrypted ,
st.text
FROM sys.dm_exec_connections c
INNER JOIN sys.dm_exec_sessions s ON c.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle) AS st
ORDER BY c.session_id



SELECT deqs.last_execution_time AS [Time] ,
dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC

C# - Operador Condicional Ternario ( ? : )

IF clásico

IF(Valor != null)
   Valor = item.valor;
ELSE
  Valor = 0.0;


En reemplazo de un IF "Operador Condicional Ternario"

Valor = item.valor != null ? (float)item.valor: (float)0.0;