MySQL INSERT如果记录不存在

时间:2016-10-19 11:44:07

标签: php mysql database

我想在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的其他内容,因为已插入新记录。

我该怎么做?

3 个答案:

答案 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()查找返回的行数。