en primer lugar eso de "agregar nuevo contrato" asumo que estas utilizando algun software... VB ? php? Fox? acces? no se... algo donde estas haciendo el formulario...
pues bien la cuestion para cualquiera que sea el software que estas ocupando lo que deberas hacer es un INSERT a partir de un SELECT.
ejemplo: Si creas un nuevo contrato generas un archivo Manualmente en CONTRACT lo que te dara un numero en CONTRACT.CONTRACT_ID, supongamos que te dio el correlativo 500 hacemos lo siguiente:
Código:
INSERT INTO Products_category
(contract_id,
category_code,
category_descripcion,
category_notes,
category_type)
SELECT
500,
category_code,
category_descripcion,
category_notes,
category_type
from Products_category
Where products_category = "AQUI_EL_CONTRATO_ANTERIOR");
Luego deberas llenar de la misma forma la tabla de productos
Código:
INSERT INTO Products
( category_id,
product_code,
product_descripcion,
abreviature,
notes,
price )
SELECT
category_id,
product_code,
product_descripcion,
abreviature,
notes,
0
from products
Where products.category_id IN
(select products_category.category_id
from products_category
Where Where products_category = "AQUI_EL_CONTRATO_ANTERIOR")
Como podras darte cuenta en el segundo Insert lo que hace es insertar todas las tuplas con precio igual a cero (0) de aquellas que cumplen con la condicion del contrato anetrior que tenias.
NOTA: Creo que en algun Query tendras que modificar algo ya que lo estoy haciendo sin tener ninguna base de datos a la mano para probar... asi que si te arroja un error trata de verificar la sintaxis