更新级联以将值插入数据库中的两个不同表

时间:2015-10-26 14:51:54

标签: cascading

我试图在另一个表中插入自动生成的外来值。

我发现可以使用更新级联我正在寻找插入许多行的外键示例表A得到的产品ID表B也获得了产品ID但B也是主键哪个自动递增。如何使用查询或C#

对此进行编码

1 个答案:

答案 0 :(得分:0)

从这里的数据库来看,你想使用fk在新表中添加图像。所以触发器在这里不起作用。您需要做的是在inser_id插入后抓住product,然后使用id插入table b,如下所示:

/*DATABASE TABLES*/

CREATE TABLE `product` (
  `productID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) DEFAULT NULL,
  `type` varchar(24) DEFAULT NULL,
  `price` float DEFAULT NULL,
  `location` varchar(256) DEFAULT NULL,
  PRIMARY KEY (`productID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1


CREATE TABLE `product_image` (
  `imageID` int(11) NOT NULL AUTO_INCREMENT,
  `productID` int(11) NOT NULL,
  `location` varchar(64) DEFAULT NULL,
  `image` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`imageID`),
  KEY `product_images_ref_product` (`productID`),
  CONSTRAINT `product_images_ref_product` FOREIGN KEY (`productID`) REFERENCES `product` (`productID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1


//Using C#
MySqlCommand comm = connect.CreateCommand();
comm.CommandText = string.Format("INSERT INTO product( `name`, `type`, `price`, `location` ) VALUES( '{0}', '{1}', {2}, '{3}' ); select last_insert_id();", 'Product 1', 'Product Type', 2.50, 'Here where I live' );

/* Grab the new product id */
int new_id = Convert.ToInt32(comm.ExecuteScalar());

/* 
    adding images to the table 
    here you can use a for loop to add more than one images.
*/
MySqlCommand comm = connect.CreateCommand();
comm.CommandText = string.Format( "INSERT INTO product_image ( `productID`, `location`, `image` )  VALUES( {0}, '{1}', {2} );", new_id, 'image_location', 'image_name' );

comm.ExecuteScalar();