データベース板もあるが、あそこは過疎板だからこっちに立てました。
データベース関連のプログラミングならな〜んでもOK。
色んな話をしませまうる号。
探検
データベースプログラミング全般スレ
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
NGNG431デフォルトの名無しさん
2016/01/20(水) 16:37:02.67ID:NQlxuzeF データベース板にMSSQLスレあるよ
432デフォルトの名無しさん
2016/01/20(水) 19:46:17.26ID:F8N6o/ie >>430
どのユーザーでどのユーザー
どのユーザーでどのユーザー
433デフォルトの名無しさん
2016/02/01(月) 00:25:24.43ID:3WuLHwNd 検索の仕方が悪いのか、データベースのデータから特定のx行y列目の値を一つの変数へ格納する方法が見つからない…
コマンドプロンプト上で検索するやり方は特定の行または列だけ。
excelなら行と列を指定すればそのセルの値を取得できるが、他の面で不便だ
SQliteなんだが、特定のx行y列目の値を一つの変数へ格納する方法が知りたい
コマンドプロンプト上で検索するやり方は特定の行または列だけ。
excelなら行と列を指定すればそのセルの値を取得できるが、他の面で不便だ
SQliteなんだが、特定のx行y列目の値を一つの変数へ格納する方法が知りたい
434デフォルトの名無しさん
2016/02/01(月) 05:21:16.21ID:xBjz7JvU >>433
変数って何の変数だよ?
変数って何の変数だよ?
435デフォルトの名無しさん
2016/02/01(月) 06:09:47.86ID:lA57fNjF データベースに行数列数なんて概念あんの?
436デフォルトの名無しさん
2016/02/01(月) 06:19:13.75ID:xBjz7JvU437デフォルトの名無しさん
2016/02/01(月) 06:21:27.24ID:xBjz7JvU >>433
RDBには行の順番というものはないぞ。
RDBには行の順番というものはないぞ。
438デフォルトの名無しさん
2016/02/01(月) 09:24:33.50ID:teirB2/w SELECT 文に ORDER BY をつけてようやく順番が決まった表みたいなものになる
数十万、数百万件もあるかもしれないデータをいきなり何行目とか指定できない
順番にfetchするとかカーソル使うとか、、、特定の何番目かの行だけ取り出したければ
LIMIT OFFSET使うとか
数十万、数百万件もあるかもしれないデータをいきなり何行目とか指定できない
順番にfetchするとかカーソル使うとか、、、特定の何番目かの行だけ取り出したければ
LIMIT OFFSET使うとか
439デフォルトの名無しさん
2016/02/01(月) 09:32:31.63ID:3WuLHwNd440デフォルトの名無しさん
2016/02/01(月) 13:22:29.13ID:gmWomOLn レコードを特定して列指定で格納値を取得
さらに列の型に応じてゴニョゴニョする…とこの辺がわかってないのか
C/C++ じゃなくて VBとかスクリプトだと余計なこと考えなくていいんだけど
多分ダメなんだろうな
さらに列の型に応じてゴニョゴニョする…とこの辺がわかってないのか
C/C++ じゃなくて VBとかスクリプトだと余計なこと考えなくていいんだけど
多分ダメなんだろうな
>>433
>「select カラム from テーブル where 条件」で抽出できる、みたいに書いてある。
>けれど抽出したデータを任意に作った変数にどう取り込むのか、までは載ってないんだ…
change your mind
わからなければORMでも使えばいい
>「select カラム from テーブル where 条件」で抽出できる、みたいに書いてある。
>けれど抽出したデータを任意に作った変数にどう取り込むのか、までは載ってないんだ…
change your mind
わからなければORMでも使えばいい
442デフォルトの名無しさん
2016/02/01(月) 19:01:11.15ID:3WuLHwNd443デフォルトの名無しさん
2016/02/02(火) 00:31:00.26ID:I6GVlLy1 >>442
サブクエリで検索したまえ
サブクエリで検索したまえ
444デフォルトの名無しさん
2016/02/02(火) 01:49:46.31ID:hbRk5EKW 日を跨いですまん
>>443
これはわかりやすくて使いやすいな。
ただ最も知りたいのは、ここから自分の作った変数へ当て嵌める方法でな…。
たとえば ttp://www.dbonline.jp/mysql/select/index20.htmlの例を使うなら、
サブクエリを使って求めた行のうちのname"〜"の値を、適当な変数Xに入れて X = "〜" としたいんだ。
>>443
これはわかりやすくて使いやすいな。
ただ最も知りたいのは、ここから自分の作った変数へ当て嵌める方法でな…。
たとえば ttp://www.dbonline.jp/mysql/select/index20.htmlの例を使うなら、
サブクエリを使って求めた行のうちのname"〜"の値を、適当な変数Xに入れて X = "〜" としたいんだ。
445デフォルトの名無しさん
2016/02/02(火) 02:12:05.74ID:Nia4wB+/ >>442
VB.NETつかうんならADO.NET使えば?
VB.NETつかうんならADO.NET使えば?
446デフォルトの名無しさん
2016/02/02(火) 08:19:43.05ID:8a5xHyeA 変数ってホストの話か?お前らよく付き合うな。言語も環境もなんも書いてないのに。
447デフォルトの名無しさん
2016/02/02(火) 14:44:58.86ID:chGMw9p3 馬鹿には無理
448デフォルトの名無しさん
2016/02/04(木) 18:31:06.37ID:kJqvXS0n 住所氏名電話番号とかいろんなデータに、どんなデータ型が最適かまとめられたリストってありませんか?
449デフォルトの名無しさん
2016/02/04(木) 18:57:06.90ID:cZxKqYB+ ありますよ
450デフォルトの名無しさん
2016/02/04(木) 20:43:57.05ID:ZPaMq02w 安心してください
451デフォルトの名無しさん
2016/02/04(木) 21:27:28.08ID:gLwjaquz >>448
全部VARCHAR
全部VARCHAR
452デフォルトの名無しさん
2016/02/04(木) 23:38:59.91ID:DpQoYKor ipaが共通語彙基盤とかいうのやってるね
453デフォルトの名無しさん
2016/02/05(金) 07:24:45.41ID:z5njROW4 何それ不安しかない
454デフォルトの名無しさん
2016/02/16(火) 22:06:45.67ID:C4gEAWu1 質問なんですが、
accessはもちろんofficeすらインストールしていないpcで、
vs2015から、mdbファイルを利用できます
またaccessをデータセットとして利用できます
これ何ででしょうか?
もしかしてvs2015には、もれなくaccessもついてくるのかな?
当方、日曜プログラマです
上記は、JRAVAN,datalab競馬ソフト開発体験教室レッスン7を実行した結果です
http://jra-van.jp/dlb/sdv/trial.html
accessはもちろんofficeすらインストールしていないpcで、
vs2015から、mdbファイルを利用できます
またaccessをデータセットとして利用できます
これ何ででしょうか?
もしかしてvs2015には、もれなくaccessもついてくるのかな?
当方、日曜プログラマです
上記は、JRAVAN,datalab競馬ソフト開発体験教室レッスン7を実行した結果です
http://jra-van.jp/dlb/sdv/trial.html
455454
2016/02/16(火) 22:15:23.66ID:C4gEAWu1 いや、日曜プログラマだと語弊があるかもしれない
日曜日に趣味で勉強しているおっさんです
プログラマではないです
日曜日に趣味で勉強しているおっさんです
プログラマではないです
456デフォルトの名無しさん
2016/02/17(水) 00:01:04.23ID:SSk10E0a accessという製品はタダでは付いてきません
mdbにアクセスするためのプロバイダはoffice無しでも利用できます
mdbにアクセスするためのプロバイダはoffice無しでも利用できます
457デフォルトの名無しさん
2016/02/17(水) 00:57:40.92ID:MF/QCRL8458デフォルトの名無しさん
2016/02/17(水) 07:18:01.15ID:MgT/kZYs LibreOffice を使えば?
459デフォルトの名無しさん
2016/02/17(水) 13:21:34.95ID:MF/QCRL8 >>458
accessとbaseの互換性がいまいちわからないんですよね
mdbファイルは開けるけど
現状dbはほぼ未経験、accessもbaseも未経験
adoの勉強始めたとこですね
選択肢の1つとして考えときます
ありがとうございます
accessとbaseの互換性がいまいちわからないんですよね
mdbファイルは開けるけど
現状dbはほぼ未経験、accessもbaseも未経験
adoの勉強始めたとこですね
選択肢の1つとして考えときます
ありがとうございます
460デフォルトの名無しさん
2016/02/17(水) 22:15:55.38ID:xErgmETY libreOfficeっていけてるデータプロバイダあんの?
461デフォルトの名無しさん
2016/02/18(木) 12:58:46.87ID:S96kZ0X7 >>454
テーブルで RDB したいだけだったら Access は不要
テーブルで RDB したいだけだったら Access は不要
462デフォルトの名無しさん
2016/02/18(木) 13:00:40.69ID:S96kZ0X7 >>460
libreOffice から mdb にリンクするのが吉
libreOffice から mdb にリンクするのが吉
463454
2016/02/19(金) 22:28:46.73ID:zOCPbD4l464デフォルトの名無しさん
2016/02/21(日) 10:39:25.91ID:zmvsu5mb >>463
Accessは入ってない
Accessは入ってない
465デフォルトの名無しさん
2016/02/26(金) 19:25:15.74ID:7ZwiQuKz Access2016のダウンロード版のダウンロードサイズが1kbということは、
機能はwindowsに入ってんのかね?1kbはライセンスだけだよな
機能はwindowsに入ってんのかね?1kbはライセンスだけだよな
466デフォルトの名無しさん
2016/02/26(金) 21:13:28.84ID:jCv12aZp 再配布用のランタイムだけでも300MBくらいあるべ
https://www.microsoft.com/en-us/download/details.aspx?id=50040
https://www.microsoft.com/en-us/download/details.aspx?id=50040
467デフォルトの名無しさん
2016/02/26(金) 21:30:46.59ID:/FtM6vZD >>465
Webインストーラーでしょ
Webインストーラーでしょ
468デフォルトの名無しさん
2016/03/03(木) 17:58:33.89ID:PglFNqeT このスレ12年も存在し続けてるのかw
469デフォルトの名無しさん
2016/08/25(木) 16:35:33.34ID:f1qIuq6X 質問失礼します。
以下の順番でレコードの重複回避処理を行っています。
@ A.php で Z テーブルの X カラムの値が 49 のレコードを select してレコードの存在チェックを行う。
A @で存在しなければ、A.php で Z テーブルの X カラムの値が 49 のレコードを insert する。
今日、上司からAで insert している最中に他の A.php が走り、
2回レコードが insert されてしまう(つまりレコードが重複してしまう)可能性があるんじゃないの?って聞かれました。
そういう事は考えられるのでしょうか?
またそれを回避するにはどういう SQL 文(トランザクションでしょうか?)を書いたら良いのでしょうか?
分かる方、よろしくお願いします。
以下の順番でレコードの重複回避処理を行っています。
@ A.php で Z テーブルの X カラムの値が 49 のレコードを select してレコードの存在チェックを行う。
A @で存在しなければ、A.php で Z テーブルの X カラムの値が 49 のレコードを insert する。
今日、上司からAで insert している最中に他の A.php が走り、
2回レコードが insert されてしまう(つまりレコードが重複してしまう)可能性があるんじゃないの?って聞かれました。
そういう事は考えられるのでしょうか?
またそれを回避するにはどういう SQL 文(トランザクションでしょうか?)を書いたら良いのでしょうか?
分かる方、よろしくお願いします。
470469
2016/08/25(木) 16:41:17.60ID:f1qIuq6X すいません。
開発環境を忘れてました。
php7.0.6
MySQL5.6
よろしくお願いします。
開発環境を忘れてました。
php7.0.6
MySQL5.6
よろしくお願いします。
471469
2016/08/25(木) 16:46:28.67ID:f1qIuq6X すいません。また補足です。
Z テーブルの X カラムにユニーク属性は付けていません。
他にもカラムがあって設計上付けないことになっています。
Z テーブルの X カラムにユニーク属性は付けていません。
他にもカラムがあって設計上付けないことになっています。
472デフォルトの名無しさん
2016/08/25(木) 16:48:36.83ID:9o9g1zI8 >>469
> そういう事は考えられるのでしょうか?
考えられる。
> またそれを回避するにはどういう SQL 文(トランザクションでしょうか?)を書いたら良いのでしょうか?
Z.Xにユニーク制約をつけるのが一番簡単。
> そういう事は考えられるのでしょうか?
考えられる。
> またそれを回避するにはどういう SQL 文(トランザクションでしょうか?)を書いたら良いのでしょうか?
Z.Xにユニーク制約をつけるのが一番簡単。
473デフォルトの名無しさん
2016/08/25(木) 16:52:28.51ID:9o9g1zI8474デフォルトの名無しさん
2016/08/25(木) 21:09:39.15ID:KSci4OQ9 @とAをSerializableなトランザクションでやればいい。
475デフォルトの名無しさん
2016/08/26(金) 15:10:39.88ID:UM2x8X0F >>474
それでは無理
それでは無理
476デフォルトの名無しさん
2016/08/26(金) 20:31:32.61ID:dDBcLzC2 できるだろ。
SERIALIZABLEの意味わかってるか?
SERIALIZABLEの意味わかってるか?
477デフォルトの名無しさん
2016/08/29(月) 14:33:26.91ID:SnTWW0f8 >>476
こういうケースで問題がある。
table t: (a integer, b integer)
user1がa=3のレコードを、user2がa=4のレコードを同時に作成しようとする。
本来なら、別のデータを登録する処理なので、両立すべき。
user1: set tx_isolation = serializable;
user1: begin;
user1: select count(*) from t where a=3; -> データがないことを確認できる
user2: set tx_isolation = serializable;
user2: begin;
user2: select count(*) from t where a=4; -> データがないことを確認できる
user1: insert into t values(3, 300); -> 処理がブロックする
user2: insert into t values(4, 400); -> エラー発生(Deadlock found)、user1のブロック解除
user2: rollback;
user1: commit;
結果として、user2はデータを登録できない。
こういうケースで問題がある。
table t: (a integer, b integer)
user1がa=3のレコードを、user2がa=4のレコードを同時に作成しようとする。
本来なら、別のデータを登録する処理なので、両立すべき。
user1: set tx_isolation = serializable;
user1: begin;
user1: select count(*) from t where a=3; -> データがないことを確認できる
user2: set tx_isolation = serializable;
user2: begin;
user2: select count(*) from t where a=4; -> データがないことを確認できる
user1: insert into t values(3, 300); -> 処理がブロックする
user2: insert into t values(4, 400); -> エラー発生(Deadlock found)、user1のブロック解除
user2: rollback;
user1: commit;
結果として、user2はデータを登録できない。
478デフォルトの名無しさん
2016/08/29(月) 22:22:51.33ID:/ybRo7IQ >>469の要件は満たしてるのに、
>本来なら、別のデータを登録する処理なので、両立すべき。
なんでこういう条件を勝手に追加するんだか。
しかも、それぞれのトランザクション分離レベルで守らなければならないことと
実装に任されていることとの区別もついていないようだ。
>user2: select count(*) from t where a=4; -> データがないことを確認できる
ここでuser2をブロックあるいは失敗させてuser1を成功させてもSERIALIZABLEの
要件は満たすし、仮にここでブロックする実装なら
>user2: insert into t values(4, 400); -> エラー発生(Deadlock found)、user1のブロック解除
これをエラーにする必要もないんだが。
>本来なら、別のデータを登録する処理なので、両立すべき。
なんでこういう条件を勝手に追加するんだか。
しかも、それぞれのトランザクション分離レベルで守らなければならないことと
実装に任されていることとの区別もついていないようだ。
>user2: select count(*) from t where a=4; -> データがないことを確認できる
ここでuser2をブロックあるいは失敗させてuser1を成功させてもSERIALIZABLEの
要件は満たすし、仮にここでブロックする実装なら
>user2: insert into t values(4, 400); -> エラー発生(Deadlock found)、user1のブロック解除
これをエラーにする必要もないんだが。
479デフォルトの名無しさん
2016/08/30(火) 10:23:03.89ID:FG8f7euN >>478
> なんでこういう条件を勝手に追加するんだか。
別に勝手に追加したわけじゃなくて、>>477は普通の正常系の話。
複数人が別々のデータを同時に登録するなら、それは成功してしかるべき。
> これをエラーにする必要もないんだが。
なにか勘違いしてるようだけど、>>478は、
・お互い分離レベルがserializableなtransactionにする
・処理は、「存在確認」→「なければinsert」という処理
を普通に行う実装で、「->」以降はそれを実行した結果。
> >user2: select count(*) from t where a=4; -> データがないことを確認できる
> ここでuser2をブロックあるいは失敗させてuser1を成功させてもSERIALIZABLEの
> 要件は満たすし
serializableの要件を満たすことが目的ではないし、普通に実装すればuser2はブロックしないし
失敗もしない。
> >user2: insert into t values(4, 400); -> エラー発生(Deadlock found)、user1のブロック解除
> これをエラーにする必要もないんだが。
どういう意味?
エラーにするんじゃなくて、エラーが発生するんだけど。
> なんでこういう条件を勝手に追加するんだか。
別に勝手に追加したわけじゃなくて、>>477は普通の正常系の話。
複数人が別々のデータを同時に登録するなら、それは成功してしかるべき。
> これをエラーにする必要もないんだが。
なにか勘違いしてるようだけど、>>478は、
・お互い分離レベルがserializableなtransactionにする
・処理は、「存在確認」→「なければinsert」という処理
を普通に行う実装で、「->」以降はそれを実行した結果。
> >user2: select count(*) from t where a=4; -> データがないことを確認できる
> ここでuser2をブロックあるいは失敗させてuser1を成功させてもSERIALIZABLEの
> 要件は満たすし
serializableの要件を満たすことが目的ではないし、普通に実装すればuser2はブロックしないし
失敗もしない。
> >user2: insert into t values(4, 400); -> エラー発生(Deadlock found)、user1のブロック解除
> これをエラーにする必要もないんだが。
どういう意味?
エラーにするんじゃなくて、エラーが発生するんだけど。
480デフォルトの名無しさん
2016/08/30(火) 10:26:02.84ID:FG8f7euN というか、クライアントを二つ立ち上げて、>>477を実査にやってみれば、俺が言ってることを納得できると思う。
481デフォルトの名無しさん
2016/08/30(火) 22:41:53.12ID:d4TkCE35 >別に勝手に追加したわけじゃなくて、>>477は普通の正常系の話。
>複数人が別々のデータを同時に登録するなら、それは成功してしかるべき。
そもそもトランザクションは常に失敗の可能性があるってことすら理解してないのか。
>>469はそんなもの問題として挙げてないし、これが実際に問題となるかどうかはもう少し
具体的にアクセス規模や性能要件なんかを出して議論するものだ。
>serializableの要件を満たすことが目的ではないし、普通に実装すればuser2はブロックしないし
>失敗もしない。
>エラーにするんじゃなくて、エラーが発生するんだけど。
>>478に書いた「実装」ってのはDBMSの実装のことな。
SERIALIZABLEの要件を満たすのもエラーを出すのもDBMS側の仕事。
極端な話、
>user1: select count(*) from t where a=3; -> データがないことを確認できる
安直なDBMならここでtにテーブル排他ロックをかけるかもしれない。それでも規格準拠だ。
それを踏まえてもういちど>>478を読み返してみな。
>というか、クライアントを二つ立ち上げて、>>477を実査にやってみれば、俺が言ってることを納得できると思う。
>>478と同じことを書くけど、おまえさんはSQL標準で規定されたトランザクションの仕様と
個々のDBMSの実装の区別がついていない。
>複数人が別々のデータを同時に登録するなら、それは成功してしかるべき。
そもそもトランザクションは常に失敗の可能性があるってことすら理解してないのか。
>>469はそんなもの問題として挙げてないし、これが実際に問題となるかどうかはもう少し
具体的にアクセス規模や性能要件なんかを出して議論するものだ。
>serializableの要件を満たすことが目的ではないし、普通に実装すればuser2はブロックしないし
>失敗もしない。
>エラーにするんじゃなくて、エラーが発生するんだけど。
>>478に書いた「実装」ってのはDBMSの実装のことな。
SERIALIZABLEの要件を満たすのもエラーを出すのもDBMS側の仕事。
極端な話、
>user1: select count(*) from t where a=3; -> データがないことを確認できる
安直なDBMならここでtにテーブル排他ロックをかけるかもしれない。それでも規格準拠だ。
それを踏まえてもういちど>>478を読み返してみな。
>というか、クライアントを二つ立ち上げて、>>477を実査にやってみれば、俺が言ってることを納得できると思う。
>>478と同じことを書くけど、おまえさんはSQL標準で規定されたトランザクションの仕様と
個々のDBMSの実装の区別がついていない。
482デフォルトの名無しさん
2016/08/31(水) 10:08:49.24ID:csb4seou483デフォルトの名無しさん
2016/08/31(水) 10:23:23.44ID:csb4seou484469
2016/08/31(水) 20:31:43.28ID:goJly4rw 返答ありがとうございました。
前提条件が不明確でいらぬトラブルを生んでしまったかもしれません。
すいませんでした。
やりたい事をまとめますと「複数同時に実行される A.php で、明確に1レコードだけが挿入されるようにしたい」です。
前提条件が不明確でいらぬトラブルを生んでしまったかもしれません。
すいませんでした。
やりたい事をまとめますと「複数同時に実行される A.php で、明確に1レコードだけが挿入されるようにしたい」です。
485469
2016/08/31(水) 20:32:39.61ID:goJly4rw 結局処理は、シリアライズな?トランザクションの使い方も良く分かっていないので以下のように設計しました。
@ Z テーブルの X カラムの値が 49 のレコードが存在するかチェックする(ほとんどの場合はココではじかれる)
A Q テーブルに T レコードが存在していなければ、ユニークなユーザーIDの入った T レコードを挿入する
INSERT INTO SELECT ?
Bその直後、その T レコードの id (オートインクリメント)の値が一番大きい T レコードを取得する
C T レコードを挿入したのが自分(ユーザーIDでチェックする)ならば、Z テーブルの X カラムの値が 49 のレコードを insert する。
これで A.php が複数同時に走ったとしても一回しか通らないはずです。
大丈夫ですよね?
PDOを利用しています。
要は他スレッド?の A.php による挿入をブロックしなければならないのですが、オーソドックスなやり方を知りたいです。。。
コードが正しいのか、タイミングをほぼ同時にできるかつ自動で微妙に時間をでずらすソフトを作成して、百本ノックならぬ100億本ノックで安全を担保しようとしています。
凄くタコなやり方ですが、これ以外に安全を担保するやり方を知らないので。。。
@ Z テーブルの X カラムの値が 49 のレコードが存在するかチェックする(ほとんどの場合はココではじかれる)
A Q テーブルに T レコードが存在していなければ、ユニークなユーザーIDの入った T レコードを挿入する
INSERT INTO SELECT ?
Bその直後、その T レコードの id (オートインクリメント)の値が一番大きい T レコードを取得する
C T レコードを挿入したのが自分(ユーザーIDでチェックする)ならば、Z テーブルの X カラムの値が 49 のレコードを insert する。
これで A.php が複数同時に走ったとしても一回しか通らないはずです。
大丈夫ですよね?
PDOを利用しています。
要は他スレッド?の A.php による挿入をブロックしなければならないのですが、オーソドックスなやり方を知りたいです。。。
コードが正しいのか、タイミングをほぼ同時にできるかつ自動で微妙に時間をでずらすソフトを作成して、百本ノックならぬ100億本ノックで安全を担保しようとしています。
凄くタコなやり方ですが、これ以外に安全を担保するやり方を知らないので。。。
486デフォルトの名無しさん
2016/08/31(水) 21:55:15.56ID:WV/fnjvU Qテーブルに1レコードしか存在し得ないよう制約がかけられているのならOK。複数挿入できるならNG。
そもそもそんなQテーブルが作れるのなら素直にZにユニーク制約をかけることを検討した方が
いいんじゃないかとは思うが。
あと、ロングトランザクションなら楽観的ロックも仕方ないが、ちゃんとトランザクションの使い方を
学んだ方が後々苦労せずに済むと思うがねぇ。
そもそもそんなQテーブルが作れるのなら素直にZにユニーク制約をかけることを検討した方が
いいんじゃないかとは思うが。
あと、ロングトランザクションなら楽観的ロックも仕方ないが、ちゃんとトランザクションの使い方を
学んだ方が後々苦労せずに済むと思うがねぇ。
487デフォルトの名無しさん
2016/08/31(水) 22:08:34.19ID:3y45z8zT そもそもMySQLって、エンジンによってはトランザクションそのものをサポートしてなかった気がするけど
MySQLの排他制御がどうなってるか知らんが、普通に考えれば
テーブル全体に排他ロック獲得
チェック
インサート
テーブルロック解除
でできるんじゃね
同時実効性とかロック待ちで性能低下とか知った事じゃないけどな
MySQLの排他制御がどうなってるか知らんが、普通に考えれば
テーブル全体に排他ロック獲得
チェック
インサート
テーブルロック解除
でできるんじゃね
同時実効性とかロック待ちで性能低下とか知った事じゃないけどな
488デフォルトの名無しさん
2016/09/01(木) 00:33:23.21ID:nGqVI4Wr >>469
1で存在チェックしてから、2で挿入するって、
1と2の間に、他のプロセスが割り込めるから、典型的なダメパターン。
教科書に書いてある、やっちゃいけない事前問い合わせ
一々、2回もSQL実行するのは無駄。
いきなり、挿入すればいい。
挿入できなければエラーになるだけ
@のような丸囲み文字は、Windowsの環境依存文字だから、使わないように
1で存在チェックしてから、2で挿入するって、
1と2の間に、他のプロセスが割り込めるから、典型的なダメパターン。
教科書に書いてある、やっちゃいけない事前問い合わせ
一々、2回もSQL実行するのは無駄。
いきなり、挿入すればいい。
挿入できなければエラーになるだけ
@のような丸囲み文字は、Windowsの環境依存文字だから、使わないように
489デフォルトの名無しさん
2016/09/01(木) 04:24:13.09ID:kgZUAtCs カタカナは日本でしか通じないから
Englishで書いてください
Englishで書いてください
490デフォルトの名無しさん
2016/09/01(木) 10:25:48.93ID:lxKZC7pd491469
2016/09/02(金) 10:39:25.56ID:13McY78U 返答ありがとうございます。
一つ間違っていました。
丸3 の「一番大きい T レコードを〜」は「一番小さい T レコードを〜」でした。
>>486
>Qテーブルに1レコードしか存在し得ないよう制約がかけられているのならOK。複数挿入できるならNG。
複数挿入できないように制約をかけます。
良く分かってないので怖いですが、INSERT INTO SELECT(行が無ければ挿入?)で実現しようとしています。
>>487
テーブルロックは使わない方法でご教授いただければと思います。
>>488
丸2 で「存在していなければ挿入」とするので、丸1 は必要ないのですが、念のために入れてるだけです。
>>490
テーブルロックは使わない方法でご教授いただければと思います。
一つ間違っていました。
丸3 の「一番大きい T レコードを〜」は「一番小さい T レコードを〜」でした。
>>486
>Qテーブルに1レコードしか存在し得ないよう制約がかけられているのならOK。複数挿入できるならNG。
複数挿入できないように制約をかけます。
良く分かってないので怖いですが、INSERT INTO SELECT(行が無ければ挿入?)で実現しようとしています。
>>487
テーブルロックは使わない方法でご教授いただければと思います。
>>488
丸2 で「存在していなければ挿入」とするので、丸1 は必要ないのですが、念のために入れてるだけです。
>>490
テーブルロックは使わない方法でご教授いただければと思います。
492469
2016/09/02(金) 10:41:00.77ID:13McY78U >2回もSQL実行するのは無駄
指摘を受けてハッとしました。
やりたい事を伝え忘れていました。
「Z テーブルの X カラムの値が 49 のレコード」は結果テーブル1行だけというのは変わらないのですが、
その直前にわりと大きめのトランザクションが走ります。
そのトランザクションが複数走るのではと心配になっていました。
トランザクションはまとめて一気に走らせて「何かに失敗したら全部ロールバックできる便利な機能」位しか理解できていません。
仕組みが良く分かっていないので今勉強中です。
2人から同じご指摘いただいているので、普通はテーブルロックで行うって事ですよね。。。
ちょっとそちらも勉強して理解を深めようと思います。
進捗があったらまた書き込ませていただきます。
指摘を受けてハッとしました。
やりたい事を伝え忘れていました。
「Z テーブルの X カラムの値が 49 のレコード」は結果テーブル1行だけというのは変わらないのですが、
その直前にわりと大きめのトランザクションが走ります。
そのトランザクションが複数走るのではと心配になっていました。
トランザクションはまとめて一気に走らせて「何かに失敗したら全部ロールバックできる便利な機能」位しか理解できていません。
仕組みが良く分かっていないので今勉強中です。
2人から同じご指摘いただいているので、普通はテーブルロックで行うって事ですよね。。。
ちょっとそちらも勉強して理解を深めようと思います。
進捗があったらまた書き込ませていただきます。
493デフォルトの名無しさん
2016/09/02(金) 11:22:48.43ID:GozEyCoO494デフォルトの名無しさん
2016/09/02(金) 22:39:01.72ID:JARk4f24 >>492
トランザクションを勉強するのはいいが、ロックのことは一旦忘れた方がいい。理解の妨げになる。
明示的にロックを「使う」なんて言うのはトランザクション分離レベルを理解できなかったジジイのやること。
トランザクションを勉強するのはいいが、ロックのことは一旦忘れた方がいい。理解の妨げになる。
明示的にロックを「使う」なんて言うのはトランザクション分離レベルを理解できなかったジジイのやること。
495デフォルトの名無しさん
2016/09/05(月) 11:48:06.49ID:Q7D4v3jm トランザクション分離レベルのことがわかっていると、今回のケースでテーブルロックを使わなくてもいいってことか?
496デフォルトの名無しさん
2016/09/05(月) 20:21:03.85ID:EI9/AJWb 今回のケースに限らず、基本的にロックなんて使う必要ない。そもそも標準SQLにロックなんてないしな。
必要があるとすれば、SQL92のトランザクション対応してない古いシステムでどうしてもやらないと
ならない場合とか、全部わかってる人があえて標準じゃできない使い方をする場合くらい。
必要があるとすれば、SQL92のトランザクション対応してない古いシステムでどうしてもやらないと
ならない場合とか、全部わかってる人があえて標準じゃできない使い方をする場合くらい。
497デフォルトの名無しさん
2016/09/06(火) 03:41:01.52ID:XjpGsw+e >>494-495
ロックってのは基本的には分離レベルに応じてDBMSが勝手にやってくれる
今回の例ならSERIALIZABLEでトランザクション流せば良いだけ
理想は分離レベルの指定だけで済ますことなんだが
現実的には、どの分離レベルでどういうSQL流したらどういうロックが獲得されるかはちゃんと理解しとかないと
パフォーマンス的な問題がでるかもしれんがな
ロックってのは基本的には分離レベルに応じてDBMSが勝手にやってくれる
今回の例ならSERIALIZABLEでトランザクション流せば良いだけ
理想は分離レベルの指定だけで済ますことなんだが
現実的には、どの分離レベルでどういうSQL流したらどういうロックが獲得されるかはちゃんと理解しとかないと
パフォーマンス的な問題がでるかもしれんがな
498デフォルトの名無しさん
2016/09/06(火) 07:48:18.17ID:4rtM9TBt >理想は分離レベルの指定だけで済ますことなんだが
>現実的には、どの分離レベルでどういうSQL流したらどういうロックが獲得されるかはちゃんと理解しとかないと
それは別に相反する話じゃないが。
>現実的には、どの分離レベルでどういうSQL流したらどういうロックが獲得されるかはちゃんと理解しとかないと
それは別に相反する話じゃないが。
499デフォルトの名無しさん
2016/09/06(火) 11:27:23.34ID:JNt9wvm4 >>497
> 今回の例ならSERIALIZABLEでトランザクション流せば良いだけ
同じテーブルに同時に別のデータをINSERTすることがないという限定条件付きだけどな。
普通は、同じテーブルに同時に別のデータをINSERTすることもあるし、同時に同じデータをINSERTすることもある。
で、同時に同じデータをINSERTされないようにするには、普通はunique制限を付ける。
なんらかの理由でunique制限を付けられない場合は、論理的にはテーブルをロックするしかない。
その「テーブルをロックする」というのが、MySQLで上の限定条件に限り、目的と合致するというだけの話。
> 今回の例ならSERIALIZABLEでトランザクション流せば良いだけ
同じテーブルに同時に別のデータをINSERTすることがないという限定条件付きだけどな。
普通は、同じテーブルに同時に別のデータをINSERTすることもあるし、同時に同じデータをINSERTすることもある。
で、同時に同じデータをINSERTされないようにするには、普通はunique制限を付ける。
なんらかの理由でunique制限を付けられない場合は、論理的にはテーブルをロックするしかない。
その「テーブルをロックする」というのが、MySQLで上の限定条件に限り、目的と合致するというだけの話。
500デフォルトの名無しさん
2016/09/06(火) 20:19:05.08ID:XjpGsw+e >>499
お前の言う限定条件ってのは理解できない
だれかに言われてたけど、トランザクションは常に失敗の可能性があるってことすら理解してないのか?
あるいは同時実行されるトランザクションが複数あれば、ロック待ちが発生する可能性があるって事が理解できない?
>>論理的にはテーブルをロックするしかない
だから、SERIALIZABLEなトランザクションってのは必要ならそう言う動作するわけだが
MySQLどうこうじゃなくて、SERIALIZABLEを正しく実装してる全てのDBMSで正しく動作するけど?
MySQLがトランザクションとSERIALIZABLE分離レベルを正しく実装してるかどうかはしらん
お前の言う限定条件ってのは理解できない
だれかに言われてたけど、トランザクションは常に失敗の可能性があるってことすら理解してないのか?
あるいは同時実行されるトランザクションが複数あれば、ロック待ちが発生する可能性があるって事が理解できない?
>>論理的にはテーブルをロックするしかない
だから、SERIALIZABLEなトランザクションってのは必要ならそう言う動作するわけだが
MySQLどうこうじゃなくて、SERIALIZABLEを正しく実装してる全てのDBMSで正しく動作するけど?
MySQLがトランザクションとSERIALIZABLE分離レベルを正しく実装してるかどうかはしらん
501デフォルトの名無しさん
2016/09/06(火) 20:56:58.82ID:4rtM9TBt ロックロック言う奴はやっぱりトランザクション分離レベルが理解できてないという好例>>499
502デフォルトの名無しさん
2016/09/07(水) 03:06:30.86ID:09Xqd2ts >>477がちょっと気になったんだが
本当に先行トランザクションのuser1のinsertがブロックされたり
user2が(ロックタイムアウトじゃなくて)デッドロックで落ちたりするのか?
それがホントなら誰かMySqlのャ鴻bク周りにつb「て詳しい解説ャTイト教えてくb
本当に先行トランザクションのuser1のinsertがブロックされたり
user2が(ロックタイムアウトじゃなくて)デッドロックで落ちたりするのか?
それがホントなら誰かMySqlのャ鴻bク周りにつb「て詳しい解説ャTイト教えてくb
503デフォルャgの名無しさん
2016/09/07(水) 03:09:09.50ID:09Xqd2ts うは、なんか文字化けしとる
MySqlのロック周りについて詳しい解説サイト教えてくれ
と書いたんだが、さて
MySqlのロック周りについて詳しい解説サイト教えてくれ
と書いたんだが、さて
504デフォルトの名無しさん
2016/09/07(水) 10:18:08.32ID:99igoHFu >>500
まず、俺がトランザクションについて理解していないとか、分離レベルについて理解していないとか、
そういう思い込みを捨てろ。俺に言わせれば、お前の方が理解していないように見えるんだが。
> MySQLどうこうじゃなくて、SERIALIZABLEを正しく実装してる全てのDBMSで正しく動作するけど?
いや、serializableなトランザクションに関する各RDBMSの実装が異なっているというのが前提で、
だからこそ「serializableなトランザクションを使えばうまくいく」という一般論にはならない。
なので、「MySQLならこういう限定条件であればserializableなトランザクションを使えば良い」という
ようにしか言えない。
> >>477がちょっと気になったんだが
> 本当に先行トランザクションのuser1のinsertがブロックされたり
> user2が(ロックタイムアウトじゃなくて)デッドロックで落ちたりするのか?
いやいや、実行結果って書いたじゃん。実際に自分でもやってみたら?
> それがホントなら誰かMySqlのロック周りについて詳しい解説サイト教えてくれ
「mysql serializable」でググった1ページ目には、その「詳しい解説」は見つからなかったのか?
まず、俺がトランザクションについて理解していないとか、分離レベルについて理解していないとか、
そういう思い込みを捨てろ。俺に言わせれば、お前の方が理解していないように見えるんだが。
> MySQLどうこうじゃなくて、SERIALIZABLEを正しく実装してる全てのDBMSで正しく動作するけど?
いや、serializableなトランザクションに関する各RDBMSの実装が異なっているというのが前提で、
だからこそ「serializableなトランザクションを使えばうまくいく」という一般論にはならない。
なので、「MySQLならこういう限定条件であればserializableなトランザクションを使えば良い」という
ようにしか言えない。
> >>477がちょっと気になったんだが
> 本当に先行トランザクションのuser1のinsertがブロックされたり
> user2が(ロックタイムアウトじゃなくて)デッドロックで落ちたりするのか?
いやいや、実行結果って書いたじゃん。実際に自分でもやってみたら?
> それがホントなら誰かMySqlのロック周りについて詳しい解説サイト教えてくれ
「mysql serializable」でググった1ページ目には、その「詳しい解説」は見つからなかったのか?
505デフォルトの名無しさん
2016/09/07(水) 10:40:31.01ID:99igoHFu PostgreSQLでもやってみた。
user1: begin transaction isolation level serializable;
user1: select count(*) from t where a=3; -> データがないことを確認できる
user2: set tx_isolation = serializable;
user2: begin transaction isolation level serializable;
user2: select count(*) from t where a=4; -> データがないことを確認できる
user1: insert into t values(3, 300); -> insertは完了する
user2: insert into t values(4, 400); -> insertは完了する
user1: select count(*) from t; -> 1
user2: select count(*) from t; -> 1
user1: commit; -> 成功する
user2: commit; -> エラー発生
> ERROR: トランザクション間で read/write の依存性があったため、アクセスの直列化ができませんでした
> DETAIL: Reason code: Canceled on identification as a pivot, during commit attempt.
> HINT: リトライが行われた場合、このトランザクションは成功するかもしれません
user1: begin transaction isolation level serializable;
user1: select count(*) from t where a=3; -> データがないことを確認できる
user2: set tx_isolation = serializable;
user2: begin transaction isolation level serializable;
user2: select count(*) from t where a=4; -> データがないことを確認できる
user1: insert into t values(3, 300); -> insertは完了する
user2: insert into t values(4, 400); -> insertは完了する
user1: select count(*) from t; -> 1
user2: select count(*) from t; -> 1
user1: commit; -> 成功する
user2: commit; -> エラー発生
> ERROR: トランザクション間で read/write の依存性があったため、アクセスの直列化ができませんでした
> DETAIL: Reason code: Canceled on identification as a pivot, during commit attempt.
> HINT: リトライが行われた場合、このトランザクションは成功するかもしれません
506デフォルトの名無しさん
2016/09/07(水) 10:42:56.92ID:99igoHFu 各RDBMSがserializableなトランザクションの実装で保証するのは「ファントムリードがないこと」であって、
それを実現する方法は各RDBMSの実装にまかされている。
それを実現する方法は各RDBMSの実装にまかされている。
507デフォルトの名無しさん
2016/09/07(水) 10:43:58.68ID:99igoHFu508デフォルトの名無しさん
2016/09/07(水) 11:58:09.82ID:99igoHFu 少し解説を加えると、RDBMSはserializableなトランザクション内の文脈を見て成功・失敗を決めているわけではなく、
ただ単にファントムリードが発生しないような実装にしているだけ。
あと、ロックと処理がブロックするというのは別の話。
ファントムリードを防ぐという目的の場合に、read lock対read lockなら処理はブロックしないという実装もありだし、
read lock対read lockでも処理をブロックするという実装もありえる。
またserializableなトランザクションの場合、リトライすればOKな場合がある。
そもそも、トランザクションが重ならなければお互いOKになる場合ね。
そういうケースでは、SQL CODEの内容からリトライ可能かどうかを判定してリトライするという実装が必要。
もちろん1回だけのリトライではまた他のトランザクションと重なる場合があるので、MAX回数を決めてリトライを
続ける必要がある。
そういう面倒くさいことをしてまでも、ファントムリードを防がなければならないケースに限って、トランザクションを
serializableにするというのが正しい使いだと思う。
ユニーク性を担保したいだけだったら、テーブルロックで十分。
ただ単にファントムリードが発生しないような実装にしているだけ。
あと、ロックと処理がブロックするというのは別の話。
ファントムリードを防ぐという目的の場合に、read lock対read lockなら処理はブロックしないという実装もありだし、
read lock対read lockでも処理をブロックするという実装もありえる。
またserializableなトランザクションの場合、リトライすればOKな場合がある。
そもそも、トランザクションが重ならなければお互いOKになる場合ね。
そういうケースでは、SQL CODEの内容からリトライ可能かどうかを判定してリトライするという実装が必要。
もちろん1回だけのリトライではまた他のトランザクションと重なる場合があるので、MAX回数を決めてリトライを
続ける必要がある。
そういう面倒くさいことをしてまでも、ファントムリードを防がなければならないケースに限って、トランザクションを
serializableにするというのが正しい使いだと思う。
ユニーク性を担保したいだけだったら、テーブルロックで十分。
509デフォルトの名無しさん
2016/09/07(水) 15:28:03.69ID:SHvl642M テーブルロックは常に成功するとでも思ってるんだろうか
510デフォルトの名無しさん
2016/09/07(水) 15:44:40.75ID:99igoHFu >>509
デッドロックになるようなロックのかけ方すればエラーになるだろうけど、それと今回の話とは関係ないよね。
デッドロックになるようなロックのかけ方すればエラーになるだろうけど、それと今回の話とは関係ないよね。
511デフォルトの名無しさん
2016/09/07(水) 19:16:59.25ID:09Xqd2ts デッドロックとロックタイムアウトの区別もつかない人か
まあserializableで単独テーブルに対するアクセスでデッドロックするのもどうなんだという感じがしないでもないが
それでも少なくとも2重登録の防止って要件はserializableで満たしてるわけだが
同時実行する他のトランザクションがエラーになるのはダメとか、それは分離レベルが保証することではないし
リトライすればOKな事もあるとか、もはや分離レベル関係ないし
まあserializableで単独テーブルに対するアクセスでデッドロックするのもどうなんだという感じがしないでもないが
それでも少なくとも2重登録の防止って要件はserializableで満たしてるわけだが
同時実行する他のトランザクションがエラーになるのはダメとか、それは分離レベルが保証することではないし
リトライすればOKな事もあるとか、もはや分離レベル関係ないし
512デフォルトの名無しさん
2016/09/07(水) 22:23:54.80ID:fjXPLH9h >いや、serializableなトランザクションに関する各RDBMSの実装が異なっているというのが前提で、
>だからこそ「serializableなトランザクションを使えばうまくいく」という一般論にはならない。
この時点で理解してないのは明らか。そもそもSERIALIZABLEは無条件に直列化可能で
あることを保証するものだし。
>各RDBMSがserializableなトランザクションの実装で保証するのは「ファントムリードがないこと」であって、
>それを実現する方法は各RDBMSの実装にまかされている。
ファントムリードが起きない「だけ」なんだが、直列化可能性を保証するにはそれで十分なわけ。
まさか「ファントムリードがない」ってのを、単に他トランザクションで挿入したレコードを
見せないだけとでも思ってるんだろうか。
>だからこそ「serializableなトランザクションを使えばうまくいく」という一般論にはならない。
この時点で理解してないのは明らか。そもそもSERIALIZABLEは無条件に直列化可能で
あることを保証するものだし。
>各RDBMSがserializableなトランザクションの実装で保証するのは「ファントムリードがないこと」であって、
>それを実現する方法は各RDBMSの実装にまかされている。
ファントムリードが起きない「だけ」なんだが、直列化可能性を保証するにはそれで十分なわけ。
まさか「ファントムリードがない」ってのを、単に他トランザクションで挿入したレコードを
見せないだけとでも思ってるんだろうか。
513デフォルトの名無しさん
2016/09/08(木) 10:04:35.37ID:uHWEQ8CC >>511
もうお前の主張にはなにも興味はないが、mysqlとpostgresqlの実装にたいする感想くらいくれよ。
もうお前の主張にはなにも興味はないが、mysqlとpostgresqlの実装にたいする感想くらいくれよ。
514デフォルトの名無しさん
2016/09/08(木) 10:09:10.39ID:uHWEQ8CC >>511
> まあserializableで単独テーブルに対するアクセスでデッドロックするのもどうなんだという感じがしないでもないが
あ、これがmysqlの実装に対する感想なのか?
じゃ、もういいや。
> まあserializableで単独テーブルに対するアクセスでデッドロックするのもどうなんだという感じがしないでもないが
あ、これがmysqlの実装に対する感想なのか?
じゃ、もういいや。
515デフォルトの名無しさん
2016/09/08(木) 10:14:11.58ID:uHWEQ8CC 最後に一つだけ。
「SERIALIZABLEは無条件に直列化可能であることを保証するもの」の意味が全然わからんが、
ユニーク性を担保するためには、同時に実行される可能性があるトランザクションを「直列化」する
必要があり、それにはテーブルロックを使うのが最も簡単。
これに反論がある場合に限ってレスしてくれ。
「SERIALIZABLEは無条件に直列化可能であることを保証するもの」の意味が全然わからんが、
ユニーク性を担保するためには、同時に実行される可能性があるトランザクションを「直列化」する
必要があり、それにはテーブルロックを使うのが最も簡単。
これに反論がある場合に限ってレスしてくれ。
516デフォルトの名無しさん
2016/09/08(木) 11:18:11.85ID:uHWEQ8CC >>515への直接のレスがなければ、これでserializable話は終了します。
いい加減うざいだろうし。
「serializableなトランザクションとは何か」は、以下のスライドが俺が見つけた範囲だと一番わかりやすいと思う(それでもわかりづらいんだが)。
『トランザクションをSerializableにする4つの方法』
http://www.slideshare.net/kumagi/serializable4-56309007
いい加減うざいだろうし。
「serializableなトランザクションとは何か」は、以下のスライドが俺が見つけた範囲だと一番わかりやすいと思う(それでもわかりづらいんだが)。
『トランザクションをSerializableにする4つの方法』
http://www.slideshare.net/kumagi/serializable4-56309007
517デフォルトの名無しさん
2016/09/08(木) 21:47:43.84ID:8O2pDGJY 「SERIALIZABLEじゃ無理」→「問題がある」→「ロックの方が簡単」
なんだかなぁw
普通はトランザクション開始時に隔離レベルを1行指定する方がいちいちテーブルを指定して
ロックをかけるより簡単だと思うんだが。
「(今からトランザクションを理解するより)ロックの方が簡単」という個人的事情なのかね?
なんだかなぁw
普通はトランザクション開始時に隔離レベルを1行指定する方がいちいちテーブルを指定して
ロックをかけるより簡単だと思うんだが。
「(今からトランザクションを理解するより)ロックの方が簡単」という個人的事情なのかね?
518デフォルトの名無しさん
2016/09/09(金) 03:27:30.69ID:VuAPiSR8 >>517
ロックの詳細や問題点を正確に把握できてないんじゃないの
>serializableなトランザクションの場合、リトライすればOKな場合がある
>そういう面倒くさいことをしてまでも、ファントムリードを防がなければならないケースに限って、トランザクションを
> serializableにするというのが正しい使いだと思う。
と、あたかも自分でテーブルロックすれば他のトランザクションやリトライ系については考慮いらないかのようなこと言ってるし
>テーブルロックは常に成功するとでも思ってるんだろうか
っていう突っ込みに対して
>デッドロックになるようなロックのかけ方すればエラーになるだろうけど
って回答してるし
>デッドロックとロックタイムアウトの区別もつかない人か
についてはまともな反論してないからな
デッドロック以外にロックでエラーは出ないと思ってるんだろ
ロックの詳細や問題点を正確に把握できてないんじゃないの
>serializableなトランザクションの場合、リトライすればOKな場合がある
>そういう面倒くさいことをしてまでも、ファントムリードを防がなければならないケースに限って、トランザクションを
> serializableにするというのが正しい使いだと思う。
と、あたかも自分でテーブルロックすれば他のトランザクションやリトライ系については考慮いらないかのようなこと言ってるし
>テーブルロックは常に成功するとでも思ってるんだろうか
っていう突っ込みに対して
>デッドロックになるようなロックのかけ方すればエラーになるだろうけど
って回答してるし
>デッドロックとロックタイムアウトの区別もつかない人か
についてはまともな反論してないからな
デッドロック以外にロックでエラーは出ないと思ってるんだろ
519デフォルトの名無しさん
2016/09/24(土) 11:55:19.93ID:B225F1SQ 再利用性の高いクエリの書き方を教えてください
520デフォルトの名無しさん
2016/12/04(日) 21:38:58.08ID:OeUSkEhR Oracleってdomain使えないん?
521デフォルトの名無しさん
2016/12/06(火) 22:37:42.39ID:ZdJwFyPe 今どきRDBMSとかダサすぎ。
522デフォルトの名無しさん
2016/12/15(木) 15:36:13.98ID:7KRIzock■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
- 焼き芋を輪切りにして天ぷらにすると美味しいよ
- プロレスラーってロープに振ると走って戻ってくるけど
- お前らお嫁さん見つけた?
- なんでお前らってスピリチュアル系の話嫌いなの?
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- 薄いカーテンだけ閉めて部屋の灯りを消すと凄くいい
