元スレMySQL 総合 Part25
mysql覧 / PC版 /みんなの評価 :
101 = :
>>100
だから、それが外部キーなのかと。
MySQLの狭義の外部キーではない、
と俺は思う。
話の中で、外部キーといって
制約がないとか言われたら、
混乱必至。
102 = :
>>101
だから外部キーではないよ。 それは最初から言ってる。
103 :
キーじゃない
104 = :
そのテーブル内ではキー
105 = :
>>102
あなたが繰り返し言ってる「連携している」ってのは具体的にどういうこと?一致している以上に具体的な何かがあるんだよね
それを言ってよ
それが言えないんだったら俺様用語を勝ってに振り回してろとしか言えんよ
106 = :
>>105
リレーショナル
108 = :
○具体的に言え
×英訳しろ
109 = :
cleateって何なのか考えこんじゃったわ
110 = :
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near 'cleate table
111 :
制約しないで連携ってどうやんの?
112 = :
dead lockに関する質問です。
mysql version: 5.6.12
tx_isolation: REPEATABLE-READ
create TABLE tmp ( id bigint(10) NOT NULL auto_increment, name varchar(128) NOT NULL, PRIMARY KEY(id),UNIQUE KEY uk_name (name)) ENGINE=InnoDB;
insert into tmp values (null, "20");
insert into tmp values (null, "30");
この状態から以下の手順を1,2,3,4,5と実施すると手順5でdeadlockが発生します。
こちらの原因はなんでしょうか?
トランザクション1
手順1
begin;
手順3
insert into tmp values (null,"30"),(null, "35") ON DUPLICATE KEY UPDATE name = VALUES(name);
手順5
insert into tmp values (null,"10"),(null, "11") ON DUPLICATE KEY UPDATE name = VALUES(name);
トランザクション2
手順2
begin;
手順4
insert into tmp values (null, "20"),(null,"25") ON DUPLICATE KEY UPDATE name = VALUES(name);
113 = :
外部キー制約をテーブルに定義しなくても結合はできるからそういうことでしょ
114 = :
外部結合ですね
115 = :
>>112
insertとupdateしかしてないのにほんとかよとか思ってやってみたら再現したw
なにこれw
116 = :
> name = VALUES(name);
何をしたいのコレ?
117 = :
>>116
データが存在するしないに関わらずデータを更新または挿入するためです
こちらのことサンプルではほぼ無意味ですが、問題を簡素化して抜き出したものです
118 = :
>>111
JOINとか
119 = :
JOIN してるだけで外部キーとか言わない方がいい、混乱するだけ
120 = :
制約かけるかどうかは置いといて
そのキーを使って結合出来るならそれは外部キーでしょ
121 = :
そのキーを使って じゃなかった
その属性を使って
122 = :
普通はそういう使い方しないから
123 = :
外部キーみたいに
って最初から書いてるんだけどそこはスルーなのかな
124 = :
俺様用語好き勝手に振り回しておけ、ヴァカ
125 = :
そもそもJOINでカラム指定するのは制約だろ
126 = :
>>125
そのカラムは何と呼ぶの?
127 = :
名乗るほどのもんじゃありやせん
128 = :
人呼んでカラムの大政
130 = :
コンピュータの全ての分野を網羅したい場合、何学科に行くのが良いでしょうか?
情報科学科?電気電子工学科?物理学科?
131 = :
行くとこ行くとこにこの質問貼ってあってイラっとくるな
133 = :
select id from rank order by good-bad;
135 = :
>>133
こんなことできるのか
知らなかった
136 = :
>>112
暗黙にロックがかかってるんでしょ。
INSERT ... SELECT ...でもロックが
かかるときがあるし、
MySQL(InnoDB)のくせと思うしか
ないのでは。
137 :
節子、それバグや
139 = :
DB設計を語るスレに行った方が良いんじゃね
141 = :
全角数字、全角英字、全角ひらがな、全角カタカナ、漢字以外の文字が文字列内に含まれるか否かを判定したいです。
下記select文で書くとすると、'?????'の箇所はどのような記述をすればよいでしょうか。
select '文字列' regexp '?????'
142 = :
>>112
手順3で name="30" を INSERT した時に、uk_name インデックスにおいて name="30" の参照先(PK)が
新しい id に変わるじゃないですか。それによって、uk_name インデックスの name=20~30 の間に
ギャップロックがかかってるみたいです。
ですので、手順4で name="20" or name="25" を入れた時にロックの解除を待ち続けてしまうわけです。
なお、name="15" とか name="40" とかはギャップロックの範囲外なのですぐに INSERT できます。
uk_name はユニークキーなので、ロックをかけなくともファントムリードは起きえない
気がするのですが、なんでギャップロックを取ってるのかはよくわかりません... だれか教えて
なおこの不具合は、分離レベルを READ-COMMITTED にすると発生しません。
143 = :
>>142
仕様だろ。
コストに配慮して、広くロック
しちゃうんだろ。
144 = :
新聞購読を止めて、月3000~4000円、年間36000~48000円の節約
新聞にそのような金を払う価値はない
ただでさえ要らない
なぜなら新聞は国民の方を向いておらず、広告主のための報道しかしないからだ
それに金を払って購読することは自らの首を絞める自殺行為に等しい
145 = :
確かInnoDBって普通の行updateでもテーブルロックかかるよね。
where句でindexじゃないカラム指定してるとフルスキャンでテーブルロックされるとか
146 = :
>>145
インデックスがないならしかたない。
ロック対象レコードを特定してる
時間は読めないししても不毛かも
しれないし。
悪くない判断だと思うけど。
149 :
テーブルのカラム名とデータはどうなっているの?
150 = :
select 列1 from テーブル where 列1 in (1, 2, 3)
みんなの評価 :
類似してるかもしれないスレッド
- MySQL 総合 Part24 (1010) - [94%] - 2015/2/14 4:46
- MySQL 総合 Part15 (1001) - [94%] - 2009/4/20 12:15 ☆
- MySQL 総合 Part23 (992) - [94%] - 2013/8/11 17:00
- MySQL 総合 Part22 (1001) - [94%] - 2012/7/10 16:45
- MySQL 総合 Part26 (860) - [94%] - 2023/2/2 9:30
- MySQL 総合 Part21 (1001) - [94%] - 2011/12/25 22:16
- MySQL 総合 Part20 (995) - [94%] - 2011/10/17 4:48
- MySQL 総合 Part12 (1001) - [89%] - 2008/1/30 17:34 ○
- MySQL 総合 Part18 (986) - [89%] - 2011/1/17 15:46
- MySQL 総合 Part13 (996) - [89%] - 2008/6/10 21:02 ☆
- MySQL 総合 Part14 (1001) - [89%] - 2008/11/23 10:17 ☆
- MySQL 総合 Part17 (1001) - [89%] - 2010/6/10 20:47 ○
- MySQL 総合 Part19 (982) - [89%] - 2011/6/9 2:33
- MySQL vs PostgreSQL Part2 (941) - [36%] - 2022/5/26 1:30 ○
トップメニューへ / →のくす牧場書庫について