Red de Respuestas Legales - Derecho de bienes - En SQL Server, ¿cómo insertar una vista de una tabla multibase (incluidas dos tablas con columnas marcadas y la clave externa de la subtabla es NULL)?

En SQL Server, ¿cómo insertar una vista de una tabla multibase (incluidas dos tablas con columnas marcadas y la clave externa de la subtabla es NULL)?

Cuarta respuesta:

SET NOCOUNT ON significa que la declaración o procedimiento almacenado no devuelve un valor. Si el procedimiento almacenado (activador) contiene algunas declaraciones que no devuelven muchos datos reales, el tráfico de comunicación de la red se reducirá considerablemente. Configurar set nocount en ON puede mejorar significativamente el rendimiento.

Ya lo tienes aquí, no es necesario añadirlo.

El código SQL que di es insertar. Consulte el activador de inserción para resolver el problema de actualización usted mismo. Creo que realmente puedes aprenderlo ~ (en realidad es muy simple y no es difícil comprender los principios de las claves foráneas primarias y secundarias y las columnas autoagregables).

Si aún tienes preguntas, haz clic en "Hablar en línea" o "Dejar un mensaje sin conexión" para enviarme un mensaje. Si tengo tiempo, puedo discutir esto contigo.

——————————————————————————————————

El tercero respuesta:

¿Puedes describir tu problema? Además, ¿has prestado atención a mi respuesta después del 2010-01-02 10:20?

——————————————————————————————————

El segundo respuesta:

La siguiente respuesta fue modificada el 2010-01-02 10:20. El disparador anterior está escrito en dos lugares.

——————————————————————————————————

Primera vez respuesta:

La respuesta anterior no tuvo en cuenta la actualización.

Además, cuando mencionaste ON NULL en tu pregunta, ¿te refieres a: ON DELETE/UPDATE SET NULL?

En ese caso, es incorrecto si la clave externa del ID del producto (int, no nulo) en la tabla secundaria no puede estar vacía y debería estar vacía. Entonces no entiendo lo que quieres decir con nulo. Por favor, déjelo claro.

Los siguientes activadores se utilizan para procesar simplemente la columna de identidad:

Crear disparador Trig__Items and Especificaciones Insertar View_Items y Especificaciones

En lugar de Insertar

Me gusta

Inicio

Declarar @ProductID int

Si (no existe (seleccione 1 de la tabla de productos A1, inserte I, donde A. Producto ID = i. ID de producto))

Inicio

Insertar lista de productos A1 (ID de categoría de producto, marca registrada, transferencia externa, transferencia interna, código de nombre de producto, código de nombre de producto)

Seleccione ID de categoría de producto, marca registrada, ajuste externo, ajuste interno, código de nombre de producto y código de nombre de producto.

Desde Insertar

Seleccione @ProductID = @ @Identity

Fin

Otro

Inicio

p>

Seleccione @ID de producto = ID de producto insertado

Actualizar lista de productos A1

Establezca ID de categoría de producto = i. , agregue* /

Inserte I de la tabla de productos A1 a.

Donde a.ID del producto = i.ID del producto

Fin

Si (no existe (seleccione 1 de a3 tabla de especificaciones del producto_rodamiento b, inserte I.

Donde b. Tabla de especificaciones del producto_ID del rodamiento = i. Tabla de especificaciones del producto_ID del rodamiento))

Inserte una tabla de especificaciones del producto A3 (ID del producto, diámetro interior mm, diámetro exterior mm, espesor mm, peso kg)

Seleccione @ID de producto, diámetro interior mm, diámetro exterior mm, espesor mm, peso kg.

Desde insertar

Otro

Actualizar especificación de producto A3 table_bearing

Establecer ID de producto = @productID,

Diámetro interior mm = i.Diámetro interior mm,

Diámetro exterior mm = 1.Diámetro exterior mm,

Espesor mm = 1.Espesor mm,

Peso en kilogramos = 1. Peso en kilogramos

De la tabla de especificaciones del producto A3_rodamiento b, inserte I.

Donde b. ID de la tabla de especificación del producto = i. ID de la tabla de especificación del producto

Fin

Básicamente, lo anterior se puede utilizar, pero todavía hay un problema. es decir, si el valor de IDENTIDAD insertado en la vista no está en la tabla, es decir, debe insertarse en la tabla base. En la mayoría de los casos, el valor de la clave primaria IDENTIDAD agregado automáticamente en la tabla base no será igual a. el valor de IDENTIDAD insertado en la vista. En este punto, si inserta los mismos datos en la vista, los datos correspondientes se insertarán en la tabla base, que puede no ser lo que desea.

Si desea descartar esta situación, debe asegurarse de que el valor de identidad insertado en la vista sea regular o único, es decir, que desempeñe el papel de un valor de clave principal. En este punto, necesita crear otra tabla para almacenar el valor de identidad insertado en la vista y el valor de clave principal que realmente está en la tabla base. Al insertar en la vista, si encuentra que el valor de identificación ya existe en la tabla, cambie el valor de identificación al valor de clave principal de la tabla base correspondiente para actualizar.

Por supuesto, hay que distinguir entre lo que sucede cuando este valor de identidad existe en la tabla base y lo que sucede cuando también existe en esta tabla para almacenar el valor de identidad insertado en la vista. Depende de. usted.