私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレMySQL 総合 Part20
mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
別に間違ってはいない。
ただ、そのDBを複数アプリから触るシステムだったりする場合、
DBでデフォ値設定できるならしておいた方が、
今後のシステム保守でのバグ発生率がちょびっと下がるというのはあるかもね。
ただ、そのDBを複数アプリから触るシステムだったりする場合、
DBでデフォ値設定できるならしておいた方が、
今後のシステム保守でのバグ発生率がちょびっと下がるというのはあるかもね。
どんなバグが発生するの?
そのバグはdefault値があると本当に発生しないバグなの?
そのバグはdefault値があると本当に発生しないバグなの?
バグというか、他のプログラムが別の値をデフォルト値として入れようとしていたらどうする?
プログラム毎にデフォルト値が違うのってややこしくならないか?
プログラム毎にデフォルト値が違うのってややこしくならないか?
システム新規作成時:
全アプリで、デフォルト値設定が同じになっているか。
システム保守において:
業務的にデフォルト値が変わった時、全アプリ漏れなく設定値修正
こういうのを、手間ゼロで間違い無く出来るんだったらいいけど、そうはいかない。
だからDBという一箇所だけで定められるんだったら、その方が望ましいんよ。
全アプリで、デフォルト値設定が同じになっているか。
システム保守において:
業務的にデフォルト値が変わった時、全アプリ漏れなく設定値修正
こういうのを、手間ゼロで間違い無く出来るんだったらいいけど、そうはいかない。
だからDBという一箇所だけで定められるんだったら、その方が望ましいんよ。
アプリで複数のテーブルを結合したSQL文を発行するより
DBでVIEWをつくったほうがよい?
DBでVIEWをつくったほうがよい?
ご返信ありがとうございます。
複数アプリから使われるということはありえないDBですので、アプリ側でデフォルト値を設定しても問題無いのですね。
というか、複数アプリからDBが使われるというケース自体全く想定していなかったので勉強になりました。
複数アプリから使われるということはありえないDBですので、アプリ側でデフォルト値を設定しても問題無いのですね。
というか、複数アプリからDBが使われるというケース自体全く想定していなかったので勉強になりました。
DBを複数のプログラムが使うって当たり前の事じゃないのか?
「複数アプリから使われるということはありえない」という方が珍しいとさえ思うけど
「複数アプリから使われるということはありえない」という方が珍しいとさえ思うけど
たぶんプログラマとしてのレベルが違いすぎるんだと思いまする。
自分が作ろうとしてるのはSNSとかの単純なWEBサイトです。
WEBアプリという言い方が悪かったかもしれません。
自分が作ろうとしてるのはSNSとかの単純なWEBサイトです。
WEBアプリという言い方が悪かったかもしれません。
プログラムの塊として捉えてるからおかしい
画面単位で考えな
SNSっていったって登録、更新、削除といろいろあるでしょ
ようするに複数画面から使われてる
画面単位で考えな
SNSっていったって登録、更新、削除といろいろあるでしょ
ようするに複数画面から使われてる
複数画面が使われても統一したDBクラスでアクセスするなら
そのクラスでデフォルト値を設定すれば済むこと。
個人的にはDBのデフォルト値はあんま意味無いと思うけどな。
デフォルト値等の設定・管理をDB側、プログラム側で分かれるのは不便だし、
結局プログラムからDBの値を読み出すときにDBのデフォルト値の設定を信用せず
値のチェックや正規化を行うようにするからな。
そのクラスでデフォルト値を設定すれば済むこと。
個人的にはDBのデフォルト値はあんま意味無いと思うけどな。
デフォルト値等の設定・管理をDB側、プログラム側で分かれるのは不便だし、
結局プログラムからDBの値を読み出すときにDBのデフォルト値の設定を信用せず
値のチェックや正規化を行うようにするからな。
トランザクション処理を教えてください
テーブルAとBをロック
テーブルAの更新部分を取得
テーブルAを更新
lastInsertIdを調べる
問題なし
テーブルBの更新部分を取得
lastInsertIdを調べる
*問題なし
テーブルAとBをアンロック
もし*のところで問題があったら
Aを更新前に戻して終了といった感じでいいでしょうか?
更新前に戻す処理に問題が発生した場合はどうするんだって感じですが
ロールバック失敗みたいなことはおこるのでしょうか?
ちなみにエンジンはMyISAMです
テーブルAとBをロック
テーブルAの更新部分を取得
テーブルAを更新
lastInsertIdを調べる
問題なし
テーブルBの更新部分を取得
lastInsertIdを調べる
*問題なし
テーブルAとBをアンロック
もし*のところで問題があったら
Aを更新前に戻して終了といった感じでいいでしょうか?
更新前に戻す処理に問題が発生した場合はどうするんだって感じですが
ロールバック失敗みたいなことはおこるのでしょうか?
ちなみにエンジンはMyISAMです
すみません抜けてました
>テーブルBの更新部分を取得
この後にテーブルBの更新です
>テーブルBの更新部分を取得
この後にテーブルBの更新です
そもそも MyIsamはトランザクション使えないけど。
トランザクション使いたいんならInnoDBですよ?
トランザクション使いたいんならInnoDBですよ?
MyISAMにロールバック機能はないから
Aを更新前に戻すにはプログラム側で更新前の値を覚えておいて
その値にするようなUPDATE文を実行するわけだけど。
かえってめんどくさくね
Aを更新前に戻すにはプログラム側で更新前の値を覚えておいて
その値にするようなUPDATE文を実行するわけだけど。
かえってめんどくさくね
PRIMARYでもFOREIGNでもUNIQUEでもない
ただのKEYという制約がついてるんですが
これはどういうものなんでしょう?
SHOW CREATE TABLEをしたら出てきたのですが
なんでこんなのがついてるのかは自分でも分かりません
KEYだけだと検索ワードが多すぎて調べるのがきついです
ただのKEYという制約がついてるんですが
これはどういうものなんでしょう?
SHOW CREATE TABLEをしたら出てきたのですが
なんでこんなのがついてるのかは自分でも分かりません
KEYだけだと検索ワードが多すぎて調べるのがきついです
>>122
制約じゃなくて単なるインデックス、それは。
制約じゃなくて単なるインデックス、それは。
KEYは制約じゃあない。
そもそも、SHOW CREATE TABLEで表示されるのはDDLそのものなんだから、
マニュアル読めば書いてあるだろ。
そもそも、SHOW CREATE TABLEで表示されるのはDDLそのものなんだから、
マニュアル読めば書いてあるだろ。
>>122だけだと情報がたりなさそうなので中身はこんな感じです
CREATE TABLE `item` (
`item_id` int(11) NOT NULL AUTO_INCREMENT,
`item_name` varchar(100) NOT NULL,
PRIMARY KEY (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `item_image` (
`image_id` int(11) NOT NULL AUTO_INCREMENT,
`item_id` int(11) NOT NULL,
`image_path` varchar(255) NOT NULL,
PRIMARY KEY (`image_id`);
UNIQUE KEY `image_path` (`image_path`),
KEY `item_id` (`item_id`),
CONSTRAINT `item_image_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `item` (`item_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `item` (
`item_id` int(11) NOT NULL AUTO_INCREMENT,
`item_name` varchar(100) NOT NULL,
PRIMARY KEY (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `item_image` (
`image_id` int(11) NOT NULL AUTO_INCREMENT,
`item_id` int(11) NOT NULL,
`image_path` varchar(255) NOT NULL,
PRIMARY KEY (`image_id`);
UNIQUE KEY `image_path` (`image_path`),
KEY `item_id` (`item_id`),
CONSTRAINT `item_image_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `item` (`item_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
すみませんリロードしてませんでした
インデックスだったんですね
どうもありがとうございます
DDLは何のことか分からないので調べてきます
インデックスだったんですね
どうもありがとうございます
DDLは何のことか分からないので調べてきます
>>121
正解などない。好きにしろ。
正解などない。好きにしろ。
テーブルに指定する
DEFAULT CHARACTER SET utf8
と
DEFAULT CHARSET=utf8
って何が違うんですか?
DEFAULT CHARACTER SET utf8
と
DEFAULT CHARSET=utf8
って何が違うんですか?
質問です。
create table tblA(
clm1,
clm2,
clm3
)
create view vB AS
SELECT
clmElse AS clm3,
clmElse AS clm2,
clmElse AS clm1
FROM tblElse
この定義の時、カラム名を指定しなくて済むお手軽SQL文であるところの INSERT INTO tblA SELECT * FROM tblB を、
登録されるレコードの登録元と登録先のカラム名が一致するようにしたい。
tblAはしょっちゅう定義が変更されるので、カラム名を指定するINSERTを書くのは避けたい。
tblAに変更がある毎にビューを再定義するのは、保守担当者が再定義することを忘れるリスクが高いので最後の手段にしたい。
何かいい方法はありますか?
create table tblA(
clm1,
clm2,
clm3
)
create view vB AS
SELECT
clmElse AS clm3,
clmElse AS clm2,
clmElse AS clm1
FROM tblElse
この定義の時、カラム名を指定しなくて済むお手軽SQL文であるところの INSERT INTO tblA SELECT * FROM tblB を、
登録されるレコードの登録元と登録先のカラム名が一致するようにしたい。
tblAはしょっちゅう定義が変更されるので、カラム名を指定するINSERTを書くのは避けたい。
tblAに変更がある毎にビューを再定義するのは、保守担当者が再定義することを忘れるリスクが高いので最後の手段にしたい。
何かいい方法はありますか?
× INSERT INTO tblA SELECT * FROM tblB
○ INSERT INTO tblA SELECT * FROM vB
誤字訂正
○ INSERT INTO tblA SELECT * FROM vB
誤字訂正
tblAのメンテ担当者とvBの担当者とアプリの担当者はそんなに仲が悪いのか?
飲み会企画するとか、あるいはまず休憩所で声をかけてみてどんなことに興味が
あるか聞き出してみるとか?
飲み会企画するとか、あるいはまず休憩所で声をかけてみてどんなことに興味が
あるか聞き出してみるとか?
auto_incrementは操作しない限り1、2、3、~という感じに増えていきますが
0、1、2、3、~とすることは出来ないんでしょうか?
0、1、2、3、~とすることは出来ないんでしょうか?
すみません、phpmyadmin使ってます
主キーにauto_incrementを使ってるのですが
それを1~ではなく0~にしたいと思ってまして
主キーにauto_incrementを使ってるのですが
それを1~ではなく0~にしたいと思ってまして
>>128
MySQL :: MySQL 5.5 Reference Manual :: 9.1.3 Specifying Character Sets and Collations
http://dev.mysql.com/doc/refman/5.5/en/charset-syntax.html
CHARSET can be used as a synonym for CHARACTER SET.
MySQL :: MySQL 5.5 Reference Manual :: 9.1.3 Specifying Character Sets and Collations
http://dev.mysql.com/doc/refman/5.5/en/charset-syntax.html
CHARSET can be used as a synonym for CHARACTER SET.
>>142
auto_increment_offset などを見てると 0 は設定できない気がする...
0 からスタートさせるのではないのだが、
set sql_mode="NO_AUTO_VALUE_ON_ZERO" してから
insert すれば 0 を入れることも可能。
# トラブルの原因になりそうだから嫌だけど
http://dev.mysql.com/doc/refman/5.1/ja/server-sql-mode.html#id378544
auto_increment_offset などを見てると 0 は設定できない気がする...
0 からスタートさせるのではないのだが、
set sql_mode="NO_AUTO_VALUE_ON_ZERO" してから
insert すれば 0 を入れることも可能。
# トラブルの原因になりそうだから嫌だけど
http://dev.mysql.com/doc/refman/5.1/ja/server-sql-mode.html#id378544
文字化けとかじゃなくて保存した全角文字を表示すると
どーしても全角の部分が???になっちゃうんですが
考えられる原因とかあるでしょうか?
自分で思い当たるのは大体やったんですが・・・。
どーしても全角の部分が???になっちゃうんですが
考えられる原因とかあるでしょうか?
自分で思い当たるのは大体やったんですが・・・。
表示ってのは
MySQLコンソールとphpで表示する場合です
phpmyadminで見るとちゃんと全角で「日本人」となるのですが
他だと???に
ちなみにレコードの挿入はphpmyadminで行いました
MySQLコンソールとphpで表示する場合です
phpmyadminで見るとちゃんと全角で「日本人」となるのですが
他だと???に
ちなみにレコードの挿入はphpmyadminで行いました
OS,MySQLのバージョン、文字コードの種類、設定情報一切の情報を隠してですか
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- MySQL 総合 Part22 (1001) - [94%] - 2012/7/10 16:45
- MySQL 総合 Part21 (1001) - [94%] - 2011/12/25 22:16
- MySQL 総合 Part25 (947) - [94%] - 2017/6/18 6:30
- MySQL 総合 Part24 (1010) - [94%] - 2015/2/14 4:46
- MySQL 総合 Part23 (992) - [94%] - 2013/8/11 17:00
- MySQL 総合 Part26 (860) - [94%] - 2023/2/2 9:30
- MySQL 総合 Part13 (996) - [89%] - 2008/6/10 21:02 ☆
- MySQL 総合 Part14 (1001) - [89%] - 2008/11/23 10:17 ☆
- MySQL 総合 Part15 (1001) - [89%] - 2009/4/20 12:15 ☆
- MySQL 総合 Part17 (1001) - [89%] - 2010/6/10 20:47 ○
- MySQL 総合 Part18 (986) - [89%] - 2011/1/17 15:46
- MySQL 総合 Part19 (982) - [89%] - 2011/6/9 2:33
- MySQL 総合 Part12 (1001) - [89%] - 2008/1/30 17:34 ○
- MySQL vs PostgreSQL Part2 (941) - [36%] - 2022/5/26 1:30 ○
トップメニューへ / →のくす牧場書庫について