2014-05-21 3 views
0

테이블 1에 4 개의 레코드를 삽입 한 다음 5 개의 레코드를 삽입 한 다음 3 개의 레코드를 삽입했습니다. 이제 마지막 3 개의 레코드를 가져 오거나 마지막으로 삽입 한 레코드 수를 말하고 싶습니다. 나는 그것을 어떻게 얻을 것인가?마지막 레코드를 테이블에 삽입 함

실제로 시나리오에서는 checkbox 필드를 사용하여 gridview 1 사용자가 3 레코드를 선택하면이 3 레코드가 table1에 삽입 된 다음 저장 프로 시저가 마지막으로 삽입 된 3 reocrd를 선택하여 RDLC 보고서에 할당합니다 . 모든 일이 끝났지 만 마지막으로 삽입 된 레코드를 선택하는 방법을 알지 못합니다. 당신이 좀 더 유연하게 뭔가를 필요로하기 위하여려고하고있다, 그래서

+0

마지막으로 삽입 한 레코드는 데이터베이스에서 수동으로 추적해야하므로 DB에서이를 수행 할 수 없습니다. – Maarten

+0

당신은 테이블 디자인을 보여줄 수 있습니까? – Dhwani

+0

행 ID 또는 타임 스탬프가 있습니까? – ChrFin

답변

0

당신은,

SELECT column_name FROM table_name 
ORDER BY column_name DESC 
LIMIT 3; 
+0

한도는 고정되어 있지 않으며 어떤 숫자가 될 수 있습니다 – user3518032

+0

opps ...그럼 당신은 만든 날짜에 대한 coloum을 만들고 recorde 필터를 만들려고 만든 날짜 –

0

좋아 menioned 쿼리 아래에 사용할 수 있습니다. 지금은 단 하나의 사용자 만있을 수 있으며 지금은문을 실행 한 직후 보고서를 실행할 수 있습니다. 그러나 실제로 알아야 할 것은 마지막으로 보았던 행이 무엇인지입니다.

좋은 방법 중 하나는 행에 DATETIME NULL 필드를 추가하는 것입니다. processed_date으로 연락하겠습니다. 이 필드는 보고서를 위해 선택하는 저장 프로 시저에 의해 업데이트됩니다. 다음과 같은 내용 :

SELECT * FROM tbl1 
INTO #report_tbl 
WHERE processed_date IS NULL 

UPDATE tbl1 
SET processed_date = GETDATE() 
WHERE id_field IN (
    SELECT id_field 
    FROM #report_tbl 
) 

"이제 보지 않은 행"을 선택해야합니다.

1

정의에 따르면 표는 정렬되지 않은 행 집합입니다. 삽입과 동일한 배치에서 수행하지 않는 한 SQL Server에 마지막으로 삽입 된 행을 묻는 방법은 없습니다. 예를 들어 표에 IDENTITY 열이있는 경우 다음과 같이 말할 수 있습니다.

INSERT dbo.table (열) 값 (...) SELECT SCOPE_IDENTITY();

하지만 역시 마지막 첫 번째 ID 열을 제공합니다.

여기서 할 수있는 것은 타임 스탬프의 도움을 받아 테이블의 별도 열에 정의 할 수 있다는 것입니다.

변경 테이블 dbo.table ADD DateInserted DEFAULT CURRENT_TIMESTAMP;

호출 할 서비스 계층에 저장할 @lastrows 수를 사용하여 저장 프로 시저를 정의하십시오.

는 PROC sp_GetLastInsertedRows을 (@lastrows는 INT)

AS CREATE; AS X가 (SELECT * R DateInserted DESC BY = ROW_NUMBER() OVER (ORDER) dbo.table FROM ) 여기서 x FROM SELECT * r < = N;

이렇게하면 마지막 트랜잭션에 삽입 된 마지막 N 개의 행을 가져옵니다.

+0

두 점을 추가하자 :뿐만 아니라 SQL 표준에 따라 행에 순서가 없습니다, 또한 열 순서가 없습니다. 원래의 질문으로 돌아가려면 : 당신도 할 수 없으며해야합니다! __ 필요한 경우 rowNumber 또는 insertionDateTime 열과 같은 관련 정보를 테이블 디자인에 추가하여 수단을 제공해야합니다. 하지만 많은 실제 DBMS 시스템에서는 표준을 중심으로 작업하고 rowID 등을 사용할 수 있습니다. – TaW

관련 문제