我想在MySQL表中插入一条新记录,但只有在没有相同user_id的记录时才应插入。此外,我想得到一个返回的布尔值,显示是否插入了新记录。
INSERT INTO blog_post_likes (post_id, user_id) VALUES (3, 1)
实施例
此查询INSERT INTO blog_post_likes (post_id, user_id) VALUES (3, 34)
应返回' false' /' 0' /或具有相同含义的其他内容,因为已存在具有相同user_id的记录。
但是,此查询from __future__ import division
import networkx as nx
from pylab import *
import matplotlib.pyplot as plt
%pylab inline
ncols=10
N=10 #Nodes per side
G=nx.grid_2d_graph(N,N)
labels = dict( ((i,j), i + (N-1-j) * N ) for i, j in G.nodes() )
nx.relabel_nodes(G,labels,False)
inds=labels.keys()
vals=labels.values()
inds=[(N-j-1,N-i-1) for i,j in inds]
pos2=dict(zip(vals,inds))
应返回' true' / 1 /或具有相同beaning的其他内容,因为已插入新记录。
我该怎么做?
答案 0 :(得分:1)
您必须在要唯一的列中创建UNIQUE CONSTRAINT。在这种情况下,我们提到了user_id ..
列SQL命令:
CREATE TABLE blog_post_likes
(
post_id INT,
like_id INT,
user_id INT NOT NULL UNIQUE,
)
当然,您可以更改现有表格,以避免丢失表格中的现有数据。
ALTER TABLE blog_post_likes ADD CONSTRAINT user_id UNIQUE (user_id)
答案 1 :(得分:0)
您必须将两列都定义为主键。这样,如果你插入相同的记录,MySQL应该返回一个' Duplicate entry'错误。您应该检查此处引用的错误代码1062:
https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html
答案 2 :(得分:0)
在插入数据之前,请使用
SELECT * FROM blog_post_likes WHERE post_id=give_postid AND user_id=give_userid;
如果执行此查询返回一行,则表示用户已经喜欢该帖子。所以不要执行插入查询。
如果未返回任何行,请执行“插入查询”。
你可以使用
mysqli_num_rows()
查找返回的行数。