<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Shadow Table on FromDual GmbH</title><link>https://www.fromdual.com/tags/shadow-table/</link><description>Recent content in Shadow Table on FromDual GmbH</description><generator>Hugo</generator><language>en-GB</language><managingEditor>oli.sennhauser@fromdual.com (Oli Sennhauser)</managingEditor><webMaster>oli.sennhauser@fromdual.com (Oli Sennhauser)</webMaster><copyright>© FromDual GmbH</copyright><lastBuildDate>Tue, 31 Jul 2012 12:16:21 +0000</lastBuildDate><atom:link href="https://www.fromdual.com/tags/shadow-table/index.xml" rel="self" type="application/rss+xml"/><item><title>Change MyISAM tables to InnoDB and handle SELECT COUNT(*) situation</title><link>https://www.fromdual.com/blog/myisam-to-innodb-table-and-select-count-star/</link><pubDate>Tue, 12 Jun 2012 20:48:38 +0000</pubDate><author>oli.sennhauser@fromdual.com (Oli Sennhauser)</author><guid>https://www.fromdual.com/blog/myisam-to-innodb-table-and-select-count-star/</guid><description>&lt;p&gt;Its a known problem that changing the Storage Engine from MyISAM to InnoDB can cause some problems &lt;br&gt;[ &lt;a href="http://dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html" target="_blank" title="Restrictions on InnoDB Tables"&gt;1&lt;/a&gt; &lt;br&gt;] if you have queries of this type:&lt;/p&gt;</description></item><item><title>Example 1</title><link>https://www.fromdual.com/blog/example-01/</link><pubDate>Fri, 09 Dec 2011 10:07:51 +0000</pubDate><author>oli.sennhauser@fromdual.com (Oli Sennhauser)</author><guid>https://www.fromdual.com/blog/example-01/</guid><description>&lt;pre&gt;&lt;code&gt;CREATE TABLE `order` (
 id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
, name VARCHAR(64) NOT NULL
) ENGINE = InnoDB;

INSERT INTO `order` VALUES
 (NULL, 'Test order 1')
, (NULL, 'Test order 2')
, (NULL, 'Test order 3');


CREATE TABLE pos (
 id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
, order_id INT UNSIGNED NOT NULL
, name VARCHAR(64) NOT NULL
, amount SMALLINT NOT NULL
, price DECIMAL (6,2) NOT NULL
, status TINYINT NULL
) ENGINE = InnoDB;

INSERT INTO pos VALUES
 (null, 1, 'Schrauben', 50, 0.10, 0)
, (null, 1, 'Muttern', 50, 0.10, 0)
, (null, 2, 'Nägel', 1000, 0.05, 1);


CREATE TABLE pos_shadow LIKE pos;
ALTER TABLE pos_shadow ENGINE = MEMORY;
INSERT INTO pos_shadow SELECT * FROM pos;

delimiter //

CREATE TRIGGER upd BEFORE UPDATE ON pos
FOR EACH ROW
BEGIN
 UPDATE pos_shadow AS p
 JOIN `order` AS o ON o.id = p.order_id and o.id = NEW.order_id
 SET status = 1
 WHERE o.id = 1;
END;
//

delimiter ;

SELECT o.name, p.name, p.amount, p.price, (p.amount*p.price) AS total, p. status
 FROM `order` AS o
 JOIN pos_shadow AS p ON p.order_id = o.id
;

UPDATE pos AS p
 JOIN `order` AS o ON o.id = p.order_id AND o.id = 1
 SET p.status = 1, p.order_id = 1
 where o.id = 1;

SELECT o.name, p.name, p.amount, p.price, (p.amount*p.price) AS total, p. status
 FROM `order` AS o
 JOIN pos AS p on p.order_id = o.id
;
&lt;/code&gt;&lt;/pre&gt;</description></item></channel></rss>