저는 학교 사용자를 위해 드롭 다운 메뉴에서 특정 제품을 구입할 수있는 간단한 웹 기반 응용 프로그램을 구축하고 있습니다. 사용자가 클릭하여 드롭 다운 메뉴에서 선택한 제품을 구입할 때마다이 제품은 구입 한 항목 테이블에 저장되고 동시에 제품이라고하는 다른 테이블에서 제거됩니다. 내가 아는 바로는이 작업을 수행 할 수 있으려면 사용자, 제품, 구매 등 3 개의 테이블이 있어야하며 구매 테이블에는 구입자가 # 1 인 외래 키가 2 열 있어야하고 구입 한 제품.외래 키 MySQL 데이터베이스
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException :
:
추가 또는 자식 행을 업데이트 할 수 없습니다 : 외래 키 제약 조건을 나는이 문제를 해결하지만 내 글래스 피쉬 서버 나 다음과 같은 오류를 던지고 계속 생각
좋아, 여기에 문제의 테이블과 외래 키는
(FOREIGN KEY이 (`id`가) users
를 (`id`) 참고 문헌 kupljeno_ibfk_1``webprodaja`.`kupljeno`, 제약 조건을`) 실패
테이블 '사용자':
id | name
1 | Ivan
2 | Beka
3 | Ogi
테이블 'proizvodi'(eng. 제품) :
id | name
1 | kafa
2 | jafa
3 | ratluk
테이블 'kupljeno'(ENG 구매).
id | name | proizvod
2 | Beka | 3
3 | Ogi | 2
테이블 'kupljeno'도 2 외래 키가 다음 'ID'에 넣어
하나 'users'테이블과 'id'컬럼을 참조합니다.
또 다른 하나는 'proizvod'열에 배치되고 'proizvodi'테이블과 해당 열 'id'를 참조합니다.
그래서 내가하려는 것은 구매자가 선택한 제품을 삭제하고 'proizvod'열에서 해당 이름을 삭제하고 동일한 제품을 'kupljeno'열에 넣는 것입니다. 그러나 구매를하고 'kupljeno'열에 세부 정보를 저장할 수 있었지만 'proizvod'열에서 구입 한 제품을 삭제할 수없는 이유가 있습니다. kupljeno에, 당신은 정말 외래 키 컬럼에 대한 값 (오히려 이상한 오히려 users_id
보다 id
이름을 제공해야
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/webprodaja","root","");
Statement st = conn.createStatement();
// if(request.getParameter("add")!=null){
ResultSet rs = st.executeQuery("select * from users");
%>
<form action="index.jsp" method="post">
<select name="user">
<%
while(rs.next())
{
String name=rs.getString(2);
String id = rs.getString(1);
%>
<option value="<%=name%>" ><%=name%></option>
<%
}
%>
</select>
<%
ResultSet rs1 = st.executeQuery("select * from proizvodi");
%>
<select name="proizvod">
<%
while(rs1.next())
{
String name1=rs1.getString(2);
String id1 = rs1.getString(1);
%>
<option value="<%=id1%>" ><%=name1%></option>
<%
}
%>
</select>
<input type="submit" name="add" value="buy"/>
</form>
<%
if(request.getParameter("add")!=null)
{
String user = request.getParameter("user");
String proizvod = request.getParameter("proizvod");
st.execute("insert into kupljeno(id, name, proizvod) values (null, '"+user+"', "+proizvod+")");
}
%>
<%-- <form action="index.jsp" method="post">
<input type="submit" name="add" value="buy">
</form> --%>
</body>
</html>
제품 테이블에서 제품을 삭제 한 이유는 무엇입니까? – amaster
'proizvodi'테이블에서 구입 한 제품을 'kupljeno'테이블에 넣은 다음 구입 한 제품을 제거하여 구매 한 것으로 보이고 더 이상 사용할 수 없게하려고합니다. 제품의 ID를 복사하여 'kupljeno'테이블의 참조 열에 저장 한 다음 'proizvodi'테이블에서 해당 값을 삭제하려면 어떻게해야합니까? –
그래서 한 사용자가 제품을 구매할 때 다른 사용자가 더 이상 제품을 구입할 수 없습니까? 이것이 효과가 있기 때문입니다. – amaster