SQLITE3에서 one to many를 만드는 방법은 무엇입니까? 내가 2 개 테이블이 있습니다SQLITE3에서 one to many를 만드는 방법?
Mans:
_id name
1 antony
2 fred
및
이point
_id date point
1 23 77
24 99
2 25 78
5 0
나는, 나를 도와, SQL 구문을하시기 바랍니다 모르겠어요.
SQLITE3에서 one to many를 만드는 방법은 무엇입니까? 내가 2 개 테이블이 있습니다SQLITE3에서 one to many를 만드는 방법?
Mans:
_id name
1 antony
2 fred
및
이point
_id date point
1 23 77
24 99
2 25 78
5 0
나는, 나를 도와, SQL 구문을하시기 바랍니다 모르겠어요.
이의 구문은 다음과 같다 ....
CREATE TABLE (MySecondTable) Foo INT FOREIGN KEY(Foo) REFERENCES MyFirstTable(PrimaryKeyField) ON DELETE CASCASDE ON UPDATE CASCASDE
는 여기에 +
illin 새우 - skrillin 악당 : 내 대답을 확인 했습니까? –
에 의해가는 문서이다 v3.6.1에서 작동 무엇 illin의 shrimp- iamkrillin skrillin villain :
CREATE TABLE (points) points_id INT
FOREIGN KEY(man_id) REFERENCES mans(PrimaryKeyField)
ON DELETE CASCASDE ON UPDATE CASCASDE
실제의 예입니다. 직원, 친구, 광고를하는 지역 비즈니스 등 비즈니스를 추천하는 사람들이 있다고 가정 해 보겠습니다. 들어오는 고객을 '추천'비즈니스라고합니다. 각 사람은 하나의 참조로만 계산되지만 참조자는 많은 추천을 참조 할 수 있습니다 (예 : 직원이 20 명의 신규 고객을 참조 할 수 있으며 직원은 리퍼러이고 직원은 20 명의 추천을 작성한 경우). 그래서, 당신은 1 리퍼러 20 referals (일대)이 : 이제
CREATE TABLE referal(
referal_id INTEGER UNIQUE NOT NULL PRIMARY KEY, //A customer can only be 1 referal.
referal_method TEXT, //How were they refered? By phone?
referer_id INTEGER , //Who refered them?
FOREIGN KEY(referer_id) REFERENCES referer(referer_id)); //Trace more about referer.
를, 둘 이상의 사람이 referal을 의미하는 것이 가능하지만, 난 단지 보상에 표준 사업 관행이라고 생각 단 하나의 referer. 따라서 두 명의 리퍼러를 나열 할 필요가 없습니다. 이것은 항상 일대일 또는 일 대 다 관계 일 것입니다. 따라서 1 대 다수 테이블로 만들어야합니다. 캐스케이드에 능숙하지는 않지만 그게 어울리는 지 파악하려고 노력할 것입니다.
언뜻보기에 ON UPDATE CASCADE ON DELETE CASCADE
은 내 대답에 포함되지 않습니다. 마지막 참조를 제거하면 참조자가 제거되지 않아야합니다.
a different example에서 상대 : 당신이 hard_candy
테이블에서 하드 캔디를 삭제하면
CREATE TABLE all_candy
(candy_num SERIAL PRIMARY KEY,
candy_maker CHAR(25));
CREATE TABLE hard_candy
(candy_num INT,
candy_flavor CHAR(20),
FOREIGN KEY (candy_num) REFERENCES all_candy
ON DELETE CASCADE)
는, 당신은 또한 all_candy
테이블에서 삭제되는 하드 캔디 사탕의 일종이기 때문에, 그리고 입력하는 경우 캔디가 변경된 경우 (예 : 중단 된 사탕) 새 INSERT 명령을 실행해야합니다.
sqlite3에서 ON UPDATE CASCADE 및 ON UPDATE DELETE에 대한 테스트 케이스를 실행했는데 아무 효과가없는 것 같습니다. 아마도 sqlite3의 기본 db 엔진에서는 작동하지 않지만 공식 SQLite 웹 사이트에 나열된 기능은 a very descriptive, easy-to-follow example of ON UPDATE CASCADE by sqlite.org입니다. 읽고 생각 해보세요.
이 내 테스트 케이스에 사용되는 스키마는 다음과 같습니다
BEGIN TRANSACTION;
CREATE TABLE candy(id integer primary key not null, name text, description text);
INSERT INTO candy VALUES(1,'Laffy Taffy', 'Delicious, soft candy.');
INSERT INTO candy VALUES(2,'Pop Rocks', 'A candy that explodes in your mouth.');
COMMIT;
BEGIN TRANSACTION;
CREATE TABLE hard_candy(id integer primary key not null, name text, description text, foreign key(id,name,description) references hard_candy ON DELETE CASCADE ON UPDATE CASCADE);
INSERT INTO hard_candy VALUES(2,'Pop Rocks', 'A candy that explodes in your mouth.');
COMMIT;
어느 테이블의 ID-2 설명 필드에 다양한 업데이트를 달렸다.
두 번째 테이블이 그런 것 같지 않습니다 -이 SQL 테이블이나 입력 할 데이터가 있습니까? – Mark
그게 두 번째 테이블 –