<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>chiavi esterne &#8211; SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/tag/chiavi-esterne/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.smsoft.it</link>
	<description>consigli settimanali su MacOS, GNU/Linux ed Open Source</description>
	<lastBuildDate>Tue, 15 Oct 2013 08:30:01 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=64968</generator>
	<item>
		<title>MySQL: cancellare le tabelle con chiavi esterne (Foreign key)</title>
		<link>https://blog.smsoft.it/2013/10/15/mysql-cancellare-le-tabelle-con-chiavi-esterne/</link>
					<comments>https://blog.smsoft.it/2013/10/15/mysql-cancellare-le-tabelle-con-chiavi-esterne/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 15 Oct 2013 08:30:01 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[chiavi esterne]]></category>
		<category><![CDATA[Foreign key]]></category>
		<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">http://blog.smsoft.it/?p=2625</guid>

					<description><![CDATA[Ormai anche per piccoli progetti MySQL si tende a creare relazioni tra tabelle (solo con motore InnoDB) definendo chiavi esterne. Le Foreign key aiutano a stabilire i comportamenti che il database dovrà assumere quando si tenterà di eliminare o modificare un record di una tabella padre legato ad uno o più record nella tabella figlio. ... <a title="MySQL: cancellare le tabelle con chiavi esterne (Foreign key)" class="read-more" href="https://blog.smsoft.it/2013/10/15/mysql-cancellare-le-tabelle-con-chiavi-esterne/" aria-label="Per saperne di più su MySQL: cancellare le tabelle con chiavi esterne (Foreign key)">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[<p>Ormai anche per piccoli progetti MySQL si tende a creare relazioni tra tabelle (solo con motore InnoDB) definendo <strong>chiavi esterne</strong>.<br />
Le <strong>Foreign key</strong> aiutano a stabilire i comportamenti che il database dovrà assumere quando si tenterà di eliminare o modificare un record di una tabella padre legato ad uno o più record nella tabella figlio. Possiamo definire in teoria cinque azioni da attivare in caso di cancellazione o modifica, anche se in pratica le azioni sono solo tre:<br />
<strong>CASCADE</strong> &#8211; La cancellazione o modifica di un record nella tabella padre genererà la cancellazione o la modifica dei record collegati nella tabella figlia.<br />
<strong>SET NULL</strong> -E&#8217; possibile attivere questa azione solo se il campo interessato della tabella figlia non è impostato a <strong>NOT NULL</strong>. In caso di eliminazione o modifica di un record nella tabella padre i record collegati della tabella figlia verranno impostati a NULL.<br />
<strong>NO ACTION</strong> o <strong>RESTRICT</strong> &#8211; Il nome di queste azioni potrebbe far pensare che il record della tabella padre venga cancellato o modificato senza ulteriori modifiche. Queste azioni invece impediscono direttamente la modifica o la cancellazione dei record della tabella padre. Praticamente specificare queste due azioni equivale a non inserire alcuna azione.<br />
<strong>SET DEFAULT</strong> &#8211; Questa azione benché supportata dallo standard SQL genera un errore sulla definizione della tabella quindi non è utilizzabile, al momento, con MySQL.</p>
<h4>Errore durante la cancellazione di tabelle con Foreign key</h4>
<p>D&#8217;altra parte, le relazioni a volte non consentono la cancellazione di tutte le tabelle, proprio perché la cancellazione è bloccata da qualche chiave esterna (Foreign key). </p>
<p>Come fare un questo caso? Semplice, si disabilita il controllo delle relazioni prima di cancellare e poi si riabilita a cancellazione avvenuta. Le query da usare sono:</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">SET FOREIGN_KEY_CHECKS = 0;</pre><p></p>
<p>cancelliamo ora tutte le tabelle ed infine:</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">SET FOREIGN_KEY_CHECKS = 1;</pre><p></p>
<p>enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2013/10/15/mysql-cancellare-le-tabelle-con-chiavi-esterne/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
