iT邦幫忙

0

如何確認有此資料在寫入資料庫

目前正在試著自己寫一個私人的轉帳系統,給許多人看過,但是還是有些小問題需要解決
目前遇到問題如下:
我想要轉帳給a,但要先確認a是否在名單中,如果a有在名單中,再把轉給a的資料寫進資料庫
我應該先如何確認有此帳號

以下為會員資料表(T2)

帳號 身分
a 學生
b 學生

確認有a這個帳號再將資料寫入轉帳紀錄(T1)

帳號 金額
a 100

2 個回答

0
黃彥儒
iT邦高手 1 級 ‧ 2018-10-13 10:03:21
最佳解答

你有兩個都叫T1的Table,為何要同名?
應該是有一個Table,帳戶金額總是要有明細吧?
該Table可以如下

|ID|日期|用戶|金額|說明
----------------------
1|1810131001|b|-100|轉出100給a
2|1810131001|a|+100|收到b轉入的100

用戶這欄使用外鍵約束,找不到用戶就會失敗,這兩個紀錄和金錢的那兩個操作一起插入成一個事務,這樣某一條失敗就全部失敗,不會成功。
你可以看看資料庫的特性,不要單純把它當Excel玩,善用他的一些性質

看更多先前的回應...收起先前的回應...
phes11434 iT邦新手 5 級 ‧ 2018-10-13 10:44:07 檢舉

不小心把兩個表都取成T1了,不太清楚應該如何讓用戶這欄使用外鍵約束,找不到用戶就會失敗

黃彥儒 iT邦高手 1 級 ‧ 2018-10-13 10:48:10 檢舉

這一般是在建立Table時就要處理好囉~去Google看看吧
雖然不知道對初學是好是壞,不過大部分物件導向的程式語言都有資料庫操作的包裝,不用自己寫SQL

小魚 iT邦高手 1 級 ‧ 2018-10-13 11:19:29 檢舉

話說如果同名不是在建立的時候就會被資料庫拒絕的嗎?

phes11434 iT邦新手 5 級 ‧ 2018-10-13 11:30:41 檢舉

表名的部份是我在這裡打錯了,在資料庫建立時是正確的表名
黃彥儒想問一下該用甚麼關鍵字去GOOGLE

黃彥儒 iT邦高手 1 級 ‧ 2018-10-13 12:25:34 檢舉

打錯還不改

paicheng0111 iT邦研究生 1 級 ‧ 2018-10-13 18:08:32 檢舉

phes11434在google上應該用foreign key去搜尋

0
paicheng0111
iT邦研究生 1 級 ‧ 2018-10-13 16:56:17

我在sqlite

SELECT 1 FROM t1 WHERE 帳號 = 'a' LIMIT 1;

如果a帳號存在,會得到1

https://dbfiddle.uk/?rdbms=sqlite_3.16&fiddle=695367cacf4fdc999c278853ea9f9d1b

我要發表回答

立即登入回答