Pregunta

Tengo muchas tablas en mi base de datos que están interrelacionadas. Tengo una tabla (tabla uno) en la que se han insertado datos y la identificación se incrementa automáticamente. Una vez que esa fila tiene un ID, quiero insertar esto en una tabla (tabla tres) con otro conjunto de ID que proviene de un formulario (estos datos también irán a una tabla, por lo que podrían desde esa tabla), lo mismo forma como los datos que entraron en la primera tabla provienen.

Las dos ID juntas forman la clave principal de la tercera tabla.

¿Cómo puedo hacer esto? Es para mostrar que más de una ID está unida a una sola ID para otra cosa.

Gracias.

¿Fue útil?

Solución

Creo que probablemente puedas hacer lo que estás describiendo (solo escribe los INSERTs en la tabla 3) en el activador de la tabla 1) pero tendrás que poner la información adicional para las filas de la tabla 3 en la fila de la tabla 1, que no es muy inteligente.

No puedo ver por qué haría eso en lugar de escribir los INSERT en su código, donde alguien que lo lea puede ver lo que está sucediendo.

El problema con los desencadenantes es que facilitan ocultar la lógica empresarial en la base de datos. Creo (y creo que soy la mayoría aquí) que es más fácil de entender, administrar, mantener y, en general, tratar con una aplicación en la que todas las reglas comerciales existen en la misma área general.

Hay razones para usar desencadenantes (por ejemplo, para propagar valores denormalizados) al igual que hay razones para usar procedimientos almacenados. Voy a afirmar que están relacionados en gran medida con áreas críticas para el rendimiento. O debería ser.

Otros consejos

No puede hacerlo a través de un activador, ya que el activador solo tiene disponibles los datos que ya ha insertado, no datos que actualmente solo residen en su interfaz de usuario.

Normalmente, la forma en que maneja esta situación es que escribe un proceso almacenado que inserta la reunión, devuelve el valor de id (usando scope_identity () en SQL Server, pero estoy seguro de que otras bases de datos tendrían un método para devolver el autogenerado Identificación también). Luego usaría ese valor para insertar en la otra tabla con los otros valores que necesita para esa tabla. Por supuesto, desearía envolver todo en una transacción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top