SQL Server - Indice unico con dos campos

 
Vista:
sin imagen de perfil
Val: 85
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Indice unico con dos campos

Publicado por sergio (59 intervenciones) el 21/07/2020 22:35:33
Hola

Quisiera saber cual es el numero de error que arrojaria sqlserver al tratar de grabar el dato ya que me da error me gustaria validarlo

el numero que arroja es 0x00000a29 que obviamente no es
Gracias por la ayuda que me pudieran brindar
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 Isaias
Val: 2.553
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Indice unico con dos campos

Publicado por Isaias (4202 intervenciones) el 22/07/2020 00:19:42
El mensaje que deberías recibir es

Msg 2627, Level 14, State 1, Line 16
Violation of PRIMARY KEY constraint 'PK_UnitMeasure_UnitMeasureCode'. Cannot insert duplicate key in object 'Production.UnitMeasure'. The duplicate key value is (BOX).
The statement has been terminated.

Claro que cambiara el nombre de la tabla, el indice y el campo
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
sin imagen de perfil
Val: 85
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Indice unico con dos campos

Publicado por sergio (59 intervenciones) el 22/07/2020 00:52:07
este es el codigo 0x000000a29


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
57
58
public static int modificarturnos(int paramnombre, string paramfecha,  string paramfechaori,  int paramcodigori,string paramhoradesde,string paramhorahasta,int paramvalor)
{
 
 
    string mfechaori = paramfechaori;
    int mcodigoori = paramcodigori;
    //valor_retorno = 0;
 
    SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
    try
    {
 
    //SqlCommand objCommand = new SqlCommand("UPDATE turnos Set fecha=@fecha,codigoagenda=@codigo WHERE (not (datename(weekday,@fechaori)='Saturday' or datename(weekday,@fechaori)='Sunday')) and codigoagenda=@codigoori and fecha=@fechaori and (hora>=@horadesde and hora<=@horahasta)", objConexion);
    SqlCommand objCommand = new SqlCommand("UPDATE turnos Set fecha=@mfecha,codigoagenda=@mcodigo WHERE (not (datename(weekday,@mfecha)='Saturday' or datename(weekday,@mfecha)='Sunday')) and codigoagenda=@codigoori and fecha=@fechaori and (hora>=@horadesde and hora<=@horahasta)", objConexion);
    // UPDATE turnos Set fecha=@mfecha,codigoagenda=@mcodigo WHERE (not (datename(weekday,@fechaori)='Saturday' or datename(weekday,@fechaori)='Sunday')) and codigoagenda=@mcodant and fecha=@fechaori and (hora>=@mhora and hora<=@mhora)
 
 
 
    SqlParameter objfecha = new SqlParameter("@mfecha", Convert.ToDateTime(paramfecha));
    SqlParameter objcodigo = new SqlParameter("@mcodigo", paramnombre);
    SqlParameter objfechaori = new SqlParameter("@fechaori", Convert.ToDateTime(mfechaori));
    SqlParameter objcodigoori = new SqlParameter("@codigoori", mcodigoori);
    SqlParameter objhoradesde = new SqlParameter("@horadesde", paramhoradesde);
    SqlParameter objhorahasta = new SqlParameter("@horahasta", paramhorahasta);
    //SqlParameter objhoravalor = new SqlParameter("@valor", valor_retorno);
 
    objCommand.Parameters.Add(objfecha);
    objCommand.Parameters.Add(objcodigo);
    objCommand.Parameters.Add(objfechaori);
    objCommand.Parameters.Add(objcodigoori);
    objCommand.Parameters.Add(objhoradesde);
    objCommand.Parameters.Add(objhorahasta);
   // objCommand.Parameters.Add(objhoravalor);
    objConexion.Open();
    //valor_retorno  = Convert.ToInt32(objhoravalor.Value);
    int valor = objCommand.ExecuteNonQuery();
 
 
    //return valor;// devuelve -1 0 o 1
   // return true;
    return valor;
    }
    catch (SqlException ex)
    {
        foreach (SqlError sError in ex.Errors)
 
            Func_proc.Erroressql(ex.Number);
 
        return valor;
    }
    finally
    {
 
        objConexion.Close();
     }
 
 
}
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
Imágen de perfil de Isaias
Val: 2.553
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Indice unico con dos campos

Publicado por Isaias (4202 intervenciones) el 22/07/2020 05:48:21
¿Es un UPDATE?
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

Indice unico con dos campos

Publicado por Sergio (59 intervenciones) el 22/07/2020 16:10:21
Si es un update
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
Imágen de perfil de Isaias
Val: 2.553
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Indice unico con dos campos

Publicado por Isaias (4202 intervenciones) el 22/07/2020 18:00:01
Yo intente hacer el UPDATE en mi base de datos y este fue el error que recibí con el UPDATE

Msg 2627, Level 14, State 1, Line 2
Violation of PRIMARY KEY constraint 'PK_UnitMeasure_UnitMeasureCode'. Cannot insert duplicate key in object 'Production.UnitMeasure'. The duplicate key value is (BOX).
The statement has been terminated.
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
sin imagen de perfil
Val: 85
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Indice unico con dos campos

Publicado por sergio (59 intervenciones) el 22/07/2020 18:06:55
este es el indice que cree
1
2
3
4
5
6
7
8
9
10
USE [C:\BASE DE DATOS\AGENDA.MDF]
GO
 
/****** Object:  Index [turnos_pk]    Script Date: 22/7/2020 1:04:57 p. m. ******/
CREATE UNIQUE NONCLUSTERED INDEX [turnos_pk] ON [dbo].[turnos]
(
	[fecha] ASC,
	[hora] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO


esta es la tabla

1
2
3
4
5
6
7
8
9
CREATE TABLE [dbo].[turnos](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[fecha] [datetime] NOT NULL,
	[hora] [time](7) NOT NULL,
	[codigoagenda] [int] NOT NULL,
	[espec] [int] NOT NULL,
	[usuarios] [varchar](50) NOT NULL
) ON [PRIMARY]
GO
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
sin imagen de perfil
Val: 85
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Indice unico con dos campos

Publicado por sergio (59 intervenciones) el 22/07/2020 20:03:12
utilice este script pra genera laclave compuesta

CREATE UNIQUE INDEX employees_pk
ON employees (employee_id, subsidiary_id)

obviamente con mis campos
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
Imágen de perfil de Isaias
Val: 2.553
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Indice unico con dos campos

Publicado por Isaias (4202 intervenciones) el 22/07/2020 20:22:32
Intenta hacer un INSERT y un UDPATE que lleven los mismos datos y ve que te manda SQL Server
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